import sys from PyQt5.QtWidgets import * class MyWindow(QWidget): def __init__(self): super().__init__() self.setWindowTitle('PyQt5 弹出窗口') self.resize(400, 300) # 加了self为全局布局,没加为局部布局 h1 = QHBoxLayout(self) btn = QPushButton('弹出窗口') btn.clicked.connect(self.do_btn) h1.addWidget(btn) def do_btn(self, event): # 输入:整数 items = ["种植", "养护"] value, ok = QInputDialog.getItem(self, "创建任务", "选择将要进行的任务\n\n请选择任务:", items, 1, True) if __name__ == "__main__": app = QApplication(sys.argv) win = MyWindow() win.show() sys.exit(app.exec_())
时间: 2024-04-11 20:29:16 浏览: 139
这段代码是一个使用PyQt5创建的简单窗口,其中包含一个按钮,点击按钮后会弹出一个选择项的输入对话框。在这个例子中,弹出的对话框继承自父窗口。
如果你希望弹出的对话框不继承父类,你可以将对话框实例化为一个独立的窗口。
以下是修改后的代码示例,其中弹出的对话框不继承父类:
```python
import sys
from PyQt5.QtWidgets import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('PyQt5 弹出窗口')
self.resize(400, 300)
h1 = QHBoxLayout()
btn = QPushButton('弹出窗口')
btn.clicked.connect(self.do_btn)
h1.addWidget(btn)
self.setLayout(h1)
def do_btn(self, event):
items = ["种植", "养护"]
value, ok = QInputDialog.getItem(self, "创建任务", "选择将要进行的任务\n\n请选择任务:", items, 1, True)
if ok:
print("Selected value:", value)
if __name__ == "__main__":
app = QApplication(sys.argv)
win = MyWindow()
win.show()
sys.exit(app.exec_())
```
在上面的代码中,我们将按钮的布局设置为局部布局(没有使用`self`),并将其添加到父窗口的布局中。在按钮点击事件的处理函数中,我们调用`QInputDialog.getItem()`来创建一个独立的输入对话框,并传入父窗口作为参数。这样,弹出的对话框就不会继承父类的属性和方法。
希望这能满足你的需求!
阅读全文