Python PyQt4:独生子window
Python PyQt4: Single child window
我有一个简单的 PyQt4 示例。
当 运行 时,它显示一个带有按钮的 QMainWindow。
如果单击该按钮,则会创建第二个 QMainWindow。
如果您再次单击它,您将获得 2 秒 windows.
在此示例中防止超过 1 秒 window 的优雅而简单的方法是什么?
import sys
from PyQt4.QtGui import *
class win2(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self,parent)
layout = QVBoxLayout()
label = QLabel(self)
label.setText('This is win2')
layout.addWidget(label)
self.adjustSize()
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
layout = QVBoxLayout()
button1 = QPushButton("win2", self)
layout.addWidget(button1)
button1.clicked.connect(self.showwin2)
def showwin2(self):
w2 = win2(self)
w2.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
每次按下按钮时,您的函数都会创建一个 class win2 的新实例。要抑制此行为,只需调用 show 和 raise_ 函数,而不是创建新实例。
我会按如下方式创建 class,并且只使用按钮 'show' window。经过测试并按预期工作。还可以考虑在分配变量时使用 self,以便可以在整个 class 实例中访问它们。
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
layout = QVBoxLayout()
button1 = QPushButton("win2", self)
layout.addWidget(button1)
button1.clicked.connect(self.showwin2)
self.w2 = win2(self)
def showwin2(self):
self.w2.show()
self.w2.raise_()
我有一个简单的 PyQt4 示例。
当 运行 时,它显示一个带有按钮的 QMainWindow。
如果单击该按钮,则会创建第二个 QMainWindow。
如果您再次单击它,您将获得 2 秒 windows.
在此示例中防止超过 1 秒 window 的优雅而简单的方法是什么?
import sys
from PyQt4.QtGui import *
class win2(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self,parent)
layout = QVBoxLayout()
label = QLabel(self)
label.setText('This is win2')
layout.addWidget(label)
self.adjustSize()
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
layout = QVBoxLayout()
button1 = QPushButton("win2", self)
layout.addWidget(button1)
button1.clicked.connect(self.showwin2)
def showwin2(self):
w2 = win2(self)
w2.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit(app.exec_())
每次按下按钮时,您的函数都会创建一个 class win2 的新实例。要抑制此行为,只需调用 show 和 raise_ 函数,而不是创建新实例。
我会按如下方式创建 class,并且只使用按钮 'show' window。经过测试并按预期工作。还可以考虑在分配变量时使用 self,以便可以在整个 class 实例中访问它们。
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
layout = QVBoxLayout()
button1 = QPushButton("win2", self)
layout.addWidget(button1)
button1.clicked.connect(self.showwin2)
self.w2 = win2(self)
def showwin2(self):
self.w2.show()
self.w2.raise_()