gpt4 book ai didi

python - 更改按钮文本消息框

转载 作者:行者123 更新时间:2023-12-01 09:26:33 25 4
gpt4 key购买 nike

使用这个answer来自How can I create a simple message box in Python? ,我创建了一个是/否/取消弹出框:

>>> import ctypes
>>> ctypes.windll.user32.MessageBoxW(0, "Your text", "Your title", 3)

看起来像这样:

enter image description here

我想知道您是否可以更改按钮的默认文本"is"、“否”和“取消”?我知道我可以使用 tkinter 来执行此操作,但是他们是使用此 ctypes 实现的快速解决方法吗?

最佳答案

我认为 @Paul Rooney 的观点非常好,tkinter 将是跨平台的。而且这比调用消息框的开销要多一点。

查看MessageBox documentation from Microsoft (MessageBoxW 是 MessageBox 的 unicode 版本),看来您对按钮的功能有一定数量的选项,并且由函数调用中的第四个参数确定:

MB_ABORTRETRYIGNORE = 2
MB_CANCELTRYCONTINUE = 6
MB_HELP = 0x4000 = 16384
MB_OK = 0
MB_OKCANCEL = 1
MB_RETRYCANCEL = 5
MB_YESNO = 4
MB_YESNOCANCEL = 3

如果这些选择对您有利并且您完全使用 Windows,那么这可能是您的赢家。这很好,因为您只有 ctypes 导入和实际的函数调用。不过为了更安全一点,您应该考虑使用 argtypes function from ctypes to make a function prototype .

要以 tkinter 方式执行此操作,您仍然可以使用简单消息框的大部分相同选项(例如是/否、确定/取消等)。如果您确实需要控制按钮文本,那么您必须布局一个基本表单。这是制作自己的表单的基本示例。我想你会觉得这很乏味。

from tkinter import Tk, LEFT, RIGHT, BOTH, RAISED, Message
from tkinter.ttk import Frame, Button, Style, Label


class Example(Frame):

def __init__(self):
super().__init__()

self.initUI()


def initUI(self):

self.master.title("Buttons")
self.style = Style()
self.style.theme_use("default")

frame = Frame(self, relief=RAISED, borderwidth=1)

message = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua... '

lbl1 = Message(frame, text=message)
lbl1.pack(side=LEFT, padx=5, pady=5)

frame.pack(fill=BOTH, expand=True)

self.pack(fill=BOTH, expand=True)

button1 = Button(self, text="button1")
button1.pack(side=RIGHT, padx=5, pady=5)
button2 = Button(self, text="second button")
button2.pack(side=RIGHT)


def main():

root = Tk()
root.geometry("300x200+300+300")
app = Example()
root.mainloop()

if __name__ == '__main__':
main()

关于python - 更改按钮文本消息框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com