简体   繁体   English

空白的PyQt5程序

[英]Blank PyQt5 Program

I'm trying to create a simple GUI using PyQt5, but whenever I run the program. 我试图使用PyQt5创建一个简单的GUI,但是每当我运行该程序时。 all it displays is a blank window. 它显示的只是一个空白窗口。 How can get elements such as a pushbutton or the QLineEdit to actually appear in the window? 如何使按钮或QLineEdit等元素真正出现在窗口中?

Any pointers would be appreciated as I am trying to create an application that can take a user input (a badge and ticket number in this case) then query a database for the tube properties and quantities before displaying the information as an output. 在我尝试创建一个可以接受用户输入(在这种情况下为胸卡和票号),然后在显示信息作为输出之前向数据库查询管属性和数量的应用程序时,任何指针都将不胜感激。

from PyQt5 import QtCore, QtWidgets

class Ui_MainWindow(object):

    def __init__(self):
        self.title = 'Tube Bender UI'
        self.description = QtWidgets.QLabel('New Order Available')
        self.badge = QtWidgets.QLineEdit()
        self.ticket = QtWidgets.QLineEdit()
        self.tubes = 0

    def setupUi(self, MainWindow):

        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 641)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
        MainWindow.setSizePolicy(sizePolicy)
        MainWindow.setMaximumSize(QtCore.QSize(800, 641))

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setMinimumSize(QtCore.QSize(800, 641))
        self.centralwidget.setMaximumSize(QtCore.QSize(800, 641))
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 320, 801, 641))

        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.horizontalLayoutWidget.sizePolicy().hasHeightForWidth())

    #tubes = 0

    def coil_id(self):
        QtWidgets.QLineEdit(self)
        return self.ticket

    def page_description(self):
        QtWidgets.QLineEdit(self)
        return self.description

    def page_title(self):
        QtWidgets.QLineEdit(self)
        return self.title

    def badge_id(self):
        QtWidgets.QLineEdit(self)
        return self.badge

    def tube_count(self):
        QtWidgets.QLineEdit(self)
        print(self.tubes)


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    MainPage = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show())
    sys.exit(app.exec_()

Just have this small look on this tiny example, tried to be the simplest I could. 只是对这个小例子进行一下细微的尝试,就可以尝试成为最简单的例子。 There are much more to learn and some much more good practices not just through everything like that, but anyways, here it is: 不仅要通过类似的方法学习更多的知识,而且还有更多的好的做法,无论如何,这里是:

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QLineEdit
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QVBoxLayout
from PyQt5.QtWidgets import QWidget


class MainWindow(QMainWindow):

    layout_main = None
    central_widget = None
    lbl_name = None
    lbl_value = None
    input_name = None
    input_value = None

    def __init__(self):
        super(MainWindow, self).__init__()
        self.init_ui()

    def init_ui(self):
        #variables
        self.layout_main = QVBoxLayout()
        self.layout_labels = QHBoxLayout()
        self.layout_inputs = QHBoxLayout()
        self.central_widget = QWidget()
        self.lbl_name = QLabel("name")
        self.lbl_name.setFixedSize(100,50)
        self.lbl_value = QLabel("Value")
        self.lbl_value.setFixedSize(100, 50)
        self.input_name = QLineEdit()
        self.input_name.setFixedSize(100, 50)
        self.input_value = QLineEdit()
        self.input_value.setFixedSize(100, 50)
        #style
        self.layout_main.setContentsMargins(10, 10, 10, 10)
        self.setMinimumSize(250,100)
        #adding objects
        self.layout_labels.addWidget(self.lbl_name)
        self.layout_labels.addWidget(self.lbl_value)
        self.layout_main.addLayout(self.layout_labels)
        self.layout_inputs.addWidget(self.input_name)
        self.layout_inputs.addWidget(self.input_value)
        self.layout_main.addLayout(self.layout_inputs)

        self.central_widget.setLayout(self.layout_main)
        self.setCentralWidget(self.central_widget)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec_())

You will see that later you will have to override many classes inheriting from qt classes and personalize one by one according to your need. 您将看到,以后您将不得不重写从qt类继承的许多类,并根据需要进行个性化设置。 just a tip ") 只是一个小费“)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM