鱼C论坛

 找回密码
 立即注册
查看: 82|回复: 3

如何设置新的窗口

[复制链接]
发表于 2024-5-17 20:03:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在主窗口中做一个菜单栏,想要点击菜单栏里的按钮之后会出现一个新的窗口,用来画一些和主窗口不一样的东西的话,代码应该怎么写

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-5-17 20:03:28 | 显示全部楼层
要设置一个新的窗口,你可以使用tkinter库。以下是一个简单的例子,演示了如何在主窗口中创建一个菜单栏,点击菜单栏按钮后弹出一个新的窗口。

  1. import tkinter as tk

  2. def open_new_window():
  3.     # 创建一个新的窗口
  4.     new_window = tk.Toplevel(root)
  5.     new_window.title("新窗口")
  6.    
  7.     # 在新窗口中添加一些组件
  8.     label = tk.Label(new_window, text="这是一个新窗口")
  9.     label.pack()
  10.     button = tk.Button(new_window, text="关闭", command=new_window.destroy)
  11.     button.pack()

  12. # 创建主窗口
  13. root = tk.Tk()
  14. root.title("主窗口")

  15. # 创建菜单栏
  16. menubar = tk.Menu(root)
  17. root.config(menu=menubar)

  18. # 添加菜单选项
  19. file_menu = tk.Menu(menubar, tearoff=False)
  20. menubar.add_cascade(label="文件", menu=file_menu)
  21. file_menu.add_command(label="打开")
  22. file_menu.add_separator()
  23. file_menu.add_command(label="退出", command=root.quit)

  24. # 添加一个菜单按钮,用来打开新窗口
  25. new_window_button = tk.Button(root, text="新窗口", command=open_new_window)
  26. new_window_button.pack()

  27. # 进入主循环
  28. root.mainloop()
复制代码


运行这段代码,你将看到一个包含菜单栏和一个按钮的主窗口。当你点击菜单栏中的"新窗口"按钮时,会弹出一个新的窗口,其中包含一个标签和一个按钮。点击新窗口中的"关闭"按钮,可以关闭新窗口。

希望这能帮到你!如果还有其他问题,请随时问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-5-17 21:30:19 | 显示全部楼层
FishC 发表于 2024-5-17 20:03
要设置一个新的窗口,你可以使用tkinter库。以下是一个简单的例子,演示了如何在主窗口中创建一个菜单栏, ...

能在C++用Windows API实现吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-5-17 21:30:47 | 显示全部楼层
Suud 发表于 2024-05-17 21:30
能在C++用Windows API实现吗


是的,在C++中使用Windows API也可以实现在菜单栏按钮点击后弹出新窗口的功能。下面是一个简单的示例代码:

  1. #include <Windows.h>

  2. LRESULT CALLBACK NewWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
  3. {
  4.     switch (msg)
  5.     {
  6.         case WM_CREATE:
  7.             // 在新窗口中添加一些控件
  8.             CreateWindow(TEXT("STATIC"), TEXT("这是一个新窗口"), WS_VISIBLE | WS_CHILD, 10, 10, 150, 20, hwnd, NULL, NULL, NULL);
  9.             CreateWindow(TEXT("BUTTON"), TEXT("关闭"), WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, 10, 40, 80, 30, hwnd, NULL, NULL, NULL);
  10.             break;

  11.         case WM_COMMAND:
  12.             if (LOWORD(wParam) == 1)
  13.             {
  14.                 // 关闭按钮被点击时关闭新窗口
  15.                 DestroyWindow(hwnd);
  16.             }
  17.             break;

  18.         case WM_CLOSE:
  19.             // 新窗口关闭时销毁窗口句柄
  20.             DestroyWindow(hwnd);
  21.             break;
  22.     }

  23.     return DefWindowProc(hwnd, msg, wParam, lParam);
  24. }

  25. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
  26. {
  27.     // 注册新窗口类
  28.     WNDCLASS wc = {};
  29.     wc.lpfnWndProc = NewWindowProc;
  30.     wc.hInstance = hInstance;
  31.     wc.lpszClassName = TEXT("NewWindowClass");
  32.     RegisterClass(&wc);

  33.     // 创建主窗口
  34.     HWND hwnd = CreateWindow(TEXT("BUTTON"), TEXT("主窗口"), WS_OVERLAPPEDWINDOW, 100, 100, 400, 300, NULL, NULL, hInstance, NULL);
  35.    
  36.     // 创建菜单栏
  37.     HMENU hMenu = CreateMenu();
  38.     HMENU hSubMenu = CreatePopupMenu();
  39.     AppendMenu(hSubMenu, MF_STRING, 1, TEXT("新窗口"));
  40.     AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hSubMenu, TEXT("文件"));

  41.     // 将菜单栏关联到主窗口
  42.     SetMenu(hwnd, hMenu);

  43.     // 显示主窗口
  44.     ShowWindow(hwnd, nCmdShow);
  45.     UpdateWindow(hwnd);

  46.     // 消息循环
  47.     MSG msg;
  48.     while (GetMessage(&msg, NULL, 0, 0))
  49.     {
  50.         TranslateMessage(&msg);
  51.         DispatchMessage(&msg);
  52.     }

  53.     return (int)msg.wParam;
  54. }
复制代码


该代码使用了Windows API函数来创建主窗口、菜单栏以及处理消息。当菜单栏中的"新窗口"被点击时,将创建一个新的窗口,并在新窗口中添加一个标签和一个按钮。点击新窗口中的"关闭"按钮或者关闭新窗口时,将销毁新窗口。主窗口和菜单栏的其他功能可以根据需要进行扩展。

请注意,此代码仅适用于Windows操作系统。如果要在其他操作系统上运行,请使用相应平台的API。同时也需要注意,在Visual Studio等IDE中设置好相应的编译器选项和链接选项。

希望这对你有所帮助!如果你还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-7 18:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表