鱼C论坛

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

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

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

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

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

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


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

wxPython 提供了 MessageDialog 类,它封装了消息对话框的功能。它的构造器函数原型如下:
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,分别代表的含义是:用户按下确定按钮、取消按钮、是按钮、否按钮、帮助按钮。

例如:
import wx


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

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


if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show()
    app.MainLoop()

执行结果:


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

wxPython 提供了 MessageDialog 类,它封装了消息对话框的功能。它的构造器函数原型如下:
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,分别代表的含义是:用户按下确定按钮、取消按钮、是按钮、否按钮、帮助按钮。

例如:
import wx


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

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


if __name__ == '__main__':
    app = wx.App()
    frame = Frame()
    frame.Show()
    app.MainLoop()

执行结果:


                               
登录/注册后可看大图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

好的,请问这两个对话框都差不多吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

MessageDialog 可以指定对话框的父窗口
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

父窗口是代表优先级最高,然后可以显示在最前面吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可能我理解错你的问题了,你试试这样
wx.MessageBox(message=name + "您好,欢迎您!", caption="温馨提示", style=wx.STAY_ON_TOP)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-12 19:14:07 From FishC Mobile | 显示全部楼层
这个试过了,好像不能弹出在最前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这个我试过了,好像不能弹出在最前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-12 19:19:59 | 显示全部楼层
这样呢?
wx.MessageDialog(self, name + "您好,欢迎您!", "温馨提示", style=wx.STAY_ON_TOP).ShowModal()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-19 11:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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