首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式访问QT设计器对象

以编程方式访问QT设计器对象
EN

Stack Overflow用户
提问于 2016-02-05 13:03:47
回答 3查看 1.9K关注 0票数 1

免责声明: python和qt设计器都是新的

QT设计器4.8.7

Python 3.4

PyCharm 5.0.3

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

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

代码语言:javascript
复制
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控件添加到滚动区吗?这样我就可以知道正确的方法或“一种”正确的方法来完成此操作。

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-05 13:31:21

在不需要访问programLauncher.ui和对发布的代码进行最小更改的情况下,您可以将UI元素添加到窗口,如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-02-06 19:29:56

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

代码语言:javascript
复制
from PyQt4 import QtCore, QtGui, uic
class my_win(QtGui.QMainWindow):

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

然后,您可以使用以下内容访问您的所有小部件

代码语言:javascript
复制
self.ui.actionQuit.triggered.connect(QtGui.qApp.quit)

代码语言:javascript
复制
self.ui.my_button.triggered.connect(self.do_someting)
票数 0
EN

Stack Overflow用户

发布于 2016-02-11 14:06:56

多亏了JCVanHamme ( programLauncher.ui提示)和外部帮助,我现在了解了在运行时访问MainWindow所需要了解的大部分知识。所以对于任何对这个初学者技巧感兴趣的人来说:

  1. 在QT设计器中使用空白表单
  2. 添加控件
  3. 运行pyuic4批处理文件
  4. 查看生成的.py文件,了解有关如何添加控件的所有内容。

别让权力冲昏你的头脑-干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35224978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档