pyqt: QMessageBox - 文本框及数据设置?
我正在用pyqt做一个图形界面(GUI)。我想创建一个弹出窗口,里面有一个文本框,用户可以在里面输入他们的ID(范围是1到99),然后点击一个“确定”按钮来设置这个ID并关闭窗口。
这是我目前的代码。
def viewProfile(self)
profBox = QMessageBox()
QMessageBox.about(self, 'Profile', "///Text box where can type User ID:// ",
QMessageBox.Ok)
我不太确定怎么生成这个文本框。
另外,如果我想在我的消息窗口/框中显示一个变量的整数值或字符串,我是不是只需要把它放在引号外面就可以了?这样写的语法是什么呢?
谢谢!
2 个回答
0
你应该使用QDialog。这样你就可以按照自己的想法来定制它(比如添加文本框、按钮等等)。你可以看看我在这里的回答,基本上是用QTDesigner创建的登录对话框,但其实用代码来创建会简单很多。
2
你想使用一个叫做 QInputDialog
的东西。这个东西有很多静态方法,可以直接生成一个完整的对话框,当用户点击确定时,它会返回用户选择的整数。这意味着你不需要担心去创建对话框对象、添加小部件和按钮等等。
所以你需要调用:
parent_window = self #probably..., depends on your code
minimum_value = 1
maximum_value = 99
default_value = 1
title = "Profile"
message = "Select your user ID"
user_id, ok = QInputDialog.getInt(parent_window, title, message, default_value, minimum_value, maximum_value)
当这行 QInputDialog
的代码运行时,会弹出一个对话框给用户。当用户点击确定或取消时,输入的 user_ID
会被放到 user_id
里,而 ok
会是一个布尔值,用来表示用户是否点击了确定按钮(如果点击了确定,ok
就是 True
;如果点击了取消,ok
就是 False
)
如果你想在消息中放一个整数,你可以这样做:
message = "Select your user ID. An integer I want you to know about is %d. I hope you find that useful."%my_integer
不过这其实是一个关于Python字符串格式化的问题,你可以单独去研究一下。简单来说,在我的例子中,你可以显示一个字符串。这个字符串的长度由你决定(可以是多行的,也可以包含换行符等等)