鱼C论坛

 找回密码
 立即注册
查看: 4398|回复: 9

[已解决]python如何让对话框窗口弹出在最前面

[复制链接]
发表于 2020-8-12 16:04:56 | 显示全部楼层 |阅读模式

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

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

x
  1. wx.MessageBox(message=name + "您好,欢迎您!", caption="温馨提示")
复制代码
用Python的wxpython时,请问如何让上面这个对话框窗口弹出在最前面


最佳答案
2020-8-12 16:09:23
建议用 MessageDialog

wxPython 提供了 MessageDialog 类,它封装了消息对话框的功能。它的构造器函数原型如下:

  1. wx.MessageDialog(parent, message, caption=wx.MessageBoxCaptionStr, style=wx.OK | wx.CENTRE, pos=wx.DefaultPosition)
复制代码


其中:
  • parent 为对话框的父窗口
  • message 为消息对话框显示的内容
  • title 为对话框的标题
  • style 为对话框的样式,常用的有 wx.OK(显示确定按钮)、wx.CANCEL(显示取消按钮)、wx.YES_NO(显示是否按钮)、wx.HELP(显示帮助按钮)、wx.ICON_ERROR(显示错误图标)、wx.ICON_WARNING(显示警告图标)、wx.ICON_QUESTION(显示问号图标)、wx.ICON_INFORMATION(显示信息图标)、wx.CENTER(将对话框居中)
  • pos 为对话框显示的位置


MessageDialog 的 ShowModal() 方法用于显示对话框,它返回 wx.ID_OK、wx.ID_CANCEL、wx.ID_YES、wx.ID_NO、wx.ID_HELP,分别代表的含义是:用户按下确定按钮、取消按钮、是按钮、否按钮、帮助按钮。

例如:

  1. import wx


  2. class Frame(wx.Frame):
  3.     def __init__(self):
  4.         super().__init__(None, -1, "MessageDialog", size=(300, 300))
  5.         panel = wx.Panel(self)
  6.         btn = wx.Button(panel, -1, '点我!', (50, 50), (70, 30))
  7.         btn.Bind(wx.EVT_BUTTON, self.OnClick)

  8.     def OnClick(self, event):
  9.         dialog = wx.MessageDialog(self, '系统已崩溃!', '严重错误', style=wx.OK | wx.CENTER | wx.ICON_ERROR)
  10.         dialog.ShowModal()


  11. if __name__ == '__main__':
  12.     app = wx.App()
  13.     frame = Frame()
  14.     frame.Show()
  15.     app.MainLoop()
复制代码


执行结果:


                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-12 16:09:23 | 显示全部楼层    本楼为最佳答案   
建议用 MessageDialog

wxPython 提供了 MessageDialog 类,它封装了消息对话框的功能。它的构造器函数原型如下:

  1. wx.MessageDialog(parent, message, caption=wx.MessageBoxCaptionStr, style=wx.OK | wx.CENTRE, pos=wx.DefaultPosition)
复制代码


其中:
  • parent 为对话框的父窗口
  • message 为消息对话框显示的内容
  • title 为对话框的标题
  • style 为对话框的样式,常用的有 wx.OK(显示确定按钮)、wx.CANCEL(显示取消按钮)、wx.YES_NO(显示是否按钮)、wx.HELP(显示帮助按钮)、wx.ICON_ERROR(显示错误图标)、wx.ICON_WARNING(显示警告图标)、wx.ICON_QUESTION(显示问号图标)、wx.ICON_INFORMATION(显示信息图标)、wx.CENTER(将对话框居中)
  • pos 为对话框显示的位置


MessageDialog 的 ShowModal() 方法用于显示对话框,它返回 wx.ID_OK、wx.ID_CANCEL、wx.ID_YES、wx.ID_NO、wx.ID_HELP,分别代表的含义是:用户按下确定按钮、取消按钮、是按钮、否按钮、帮助按钮。

例如:

  1. import wx


  2. class Frame(wx.Frame):
  3.     def __init__(self):
  4.         super().__init__(None, -1, "MessageDialog", size=(300, 300))
  5.         panel = wx.Panel(self)
  6.         btn = wx.Button(panel, -1, '点我!', (50, 50), (70, 30))
  7.         btn.Bind(wx.EVT_BUTTON, self.OnClick)

  8.     def OnClick(self, event):
  9.         dialog = wx.MessageDialog(self, '系统已崩溃!', '严重错误', style=wx.OK | wx.CENTER | wx.ICON_ERROR)
  10.         dialog.ShowModal()


  11. if __name__ == '__main__':
  12.     app = wx.App()
  13.     frame = Frame()
  14.     frame.Show()
  15.     app.MainLoop()
复制代码


执行结果:


                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 16:18:54 | 显示全部楼层
zltzlt 发表于 2020-8-12 16:09
建议用 MessageDialog

好的,请问这两个对话框都差不多吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-12 16:19:20 | 显示全部楼层
A.Lyapunov 发表于 2020-8-12 16:18
好的,请问这两个对话框都差不多吗

MessageDialog 可以指定对话框的父窗口
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 16:22:43 | 显示全部楼层
zltzlt 发表于 2020-8-12 16:19
MessageDialog 可以指定对话框的父窗口

父窗口是代表优先级最高,然后可以显示在最前面吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-12 16:29:42 | 显示全部楼层
A.Lyapunov 发表于 2020-8-12 16:22
父窗口是代表优先级最高,然后可以显示在最前面吗

可能我理解错你的问题了,你试试这样

  1. wx.MessageBox(message=name + "您好,欢迎您!", caption="温馨提示", style=wx.STAY_ON_TOP)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 19:14:07 From FishC Mobile | 显示全部楼层
这个试过了,好像不能弹出在最前面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 19:15:01 From FishC Mobile | 显示全部楼层
zltzlt 发表于 2020-8-12 16:29
可能我理解错你的问题了,你试试这样

这个我试过了,好像不能弹出在最前面
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-12 19:19:59 | 显示全部楼层
这样呢?

  1. wx.MessageDialog(self, name + "您好,欢迎您!", "温馨提示", style=wx.STAY_ON_TOP).ShowModal()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 21:36:15 | 显示全部楼层

我按照你第一次发的教程,就是改成这样了。已经可以弹出在最前面了。
wx.MessageBox可以正常弹出,只是不能出现在最前面。是因为wx.MessageBox没有wx.STAY_ON_TOP类似的语法吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-25 16:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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