以编程方式访问QT Designer对象

时间:2016-02-05 13:03:48

标签: python qt pyqt

免责声明:python和qt designer的新手

QT Designer 4.8.7

Python 3.4

PyCharm 5.0.3

问题 - 如何以编程方式将控件添加到主窗体或主窗体上的滚动区域窗口小部件(在QT设计器中创建)?

我在qt设计器中创建了一个MainWindow并添加了我的小部件。以下是PyCharm中的整个测试程序:

import sys
from PyQt4 import QtGui, QtCore,  uic

from PyQt4.QtGui import *

from PyQt4.QtCore import *

qtCreatorFile = "programLauncher.ui"

Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)

class MyApp(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
    QtGui.QMainWindow.__init__(self)
    Ui_MainWindow.__init__(self)
    self.setupUi(self)

    # Cannot resize or maximize
    self.setFixedSize(1045, 770)

    # Add button test
    self.dateLabel = QtGui.QLabel("Test")
    self.pushButton = QtGui.QPushButton('Test button')

    # self.scrollArea_programs.addWidget()

    grid = QtGui.QGridLayout()
    # self.scrollArea_programs.addWidget(self.pushButton)
    grid.addWidget(self.dateLabel,0,0)
    grid.addWidget(self.pushButton,0,1)
    self.setLayout(grid)

    self.pushButton_exit.clicked.connect(self.closeEvent)

def closeEvent(self):
    QtGui.QApplication.quit()


if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  window = MyApp()
  window.show()
  sys.exit(app.exec_())

正如您所看到的,我尝试将控件添加到网格但程序运行时没有显示 - 我还尝试将控件添加到滚动区域。有人可以帮助我在运行时将1个控件添加到滚动区域 - 这样我就可以知道正确的方法来执行它或者" a"正确的方法。

提前致谢

3 个答案:

答案 0 :(得分:1)

无法访问programLauncher.ui并对发布的代码进行微小更改,您可以将UI元素添加到窗口中,如下所示:

from PyQt4 import QtGui
import sys


class MyApp(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        # Cannot resize or maximize
        self.setFixedSize(1045, 770)
        widget = QtGui.QWidget(self)
        self.setCentralWidget(widget)
        # Add button test
        self.dateLabel = QtGui.QLabel("Test")
        self.pushButton = QtGui.QPushButton('Test button')

        grid = QtGui.QGridLayout()
        grid.addWidget(self.dateLabel, 0, 0)
        grid.addWidget(self.pushButton, 0, 1)
        widget.setLayout(grid)

        self.pushButton.clicked.connect(self.closeEvent)

    def closeEvent(self, event):
        QtGui.QApplication.quit()


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

这将获得屏幕上的控件,尽管布局有很多不足之处。您可能必须根据.ui文件中的内容对此进行修改。在此示例中您需要注意的一件事是QMainWindow需要一个中央窗口小部件(上例中的widget)。然后,您可以在该小部件上设置布局。

答案 1 :(得分:0)

您可以使用设计器来创建.ui文件 您可以使用以下内容将其加载到.py

from PyQt4 import QtCore, QtGui, uic
class my_win(QtGui.QMainWindow):

    def __init__(self):
        self.ui = uic.loadUi('my_ui.ui',self)

然后您可以使用类似

的内容访问所有小部件
self.ui.actionQuit.triggered.connect(QtGui.qApp.quit)

self.ui.my_button.triggered.connect(self.do_someting)

答案 2 :(得分:0)

感谢JCVanHamme(programLauncher.ui提示)以及外部帮助,我现在学习了在运行时访问MainWindow时需要知道的大部分内容。所以对于这个初学者小贴士感兴趣的人:

  1. 在QT Designer
  2. 中填空
  3. 添加控件
  4. 运行pyuic4批处理文件
  5. 查看生成的.py文件,了解如何添加控件的一切。
  6. 不要让权力落到你的头上 - 欢呼声