如何选择在Python中运行哪些类?

时间:2014-03-09 19:00:25

标签: python class user-interface pyqt4

我在Python 3.3中使用PyQt4,制作一个GUI并有多个类,其中一些我不想运行,直到我点击某个按钮才能这样做。如何将这样的类连接到仅在单击按钮时运行,而不是在程序启动时运行。 这是我目前如何将此类连接到另一个类中的按钮。

btns.clicked.connect(self.tableshow2)   
def tableshow2(self):
        table5.show()

这是按钮所在的第一个类。

class CustTableSearch(QtGui.QDialog):
    def __init__(self, parent=None):
        super(CustTableSearch, self).__init__(parent)
        with sqlite3.connect('database.db') as db:
            cursor=db.cursor()
            num = QtGui.QInputDialog.getText(self, 'Insert TelephoneNumber', 
            'Enter TeleNum:')

table5 = CustTableSearch()

这是按钮激活的类的一部分,它在python shell的启动时运行。我已经尝试使用按钮将它放在类中的函数中,但是我不能使用.show()显示它(它是带有表的屏幕)。

2 个答案:

答案 0 :(得分:1)

假设两个类都在同一个模块中,您可以在CustomTableSearch方法中创建tableshow2(self)的实例。

...
def tableshow2(self):
    self.table5 = CustomTableSearch(self)
    self.table5.show()
...

答案 1 :(得分:0)

执行此操作的一种方法是仅按需创建对话框,而不是在加载模块时立即创建对话框。

class ProfilePage(QtGui.QMainWindow):
    def __init__(self):
        super(ProfilePage, self).__init__()
        self.table5 = None
        self.initUI()

    def initUI(self):
        ...
        btns.clicked.connect(self.tableshow2)   

    def tableshow2(self):
        if self.table5 is None:
            self.table5 = CustomTableSearch()
        self.table5.show()