免责声明: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"正确的方法。
提前致谢
答案 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时需要知道的大部分内容。所以对于这个初学者小贴士感兴趣的人:
不要让权力落到你的头上 - 欢呼声