簡體   English   中英

PyQt5 QPushButton

[英]PyQt5 QPushButton

我想讓 Pushbutton 向我顯示這樣的文本 1 你點擊了 2 PushButton 不在同一行。

from PyQt5 import QtCore, QtGui, QtWidgets
import sys

Class Ui_MainWindow (object):

    def setupUi(self, MainWindow): 
        MainWindow.resize(506, 312) 
        self.centralwidget = QtWidgets.QWidget(MainWindow) 
        
        # adding pushbutton 
        self.pushButton = QtWidgets.QPushButton(self.centralwidget) 
        self.pushButton.setGeometry(QtCore.QRect(200, 150, 93, 28)) 

        # adding signal and slot 
        self.pushButton.clicked.connect(self.changelabeltext) 
    
        self.label = QtWidgets.QLabel(self.centralwidget) 
        self.label.setGeometry(QtCore.QRect(140, 90, 221, 20))   

        # keeping the text of label empty before button get clicked 
        self.label.setText("")   
        
        MainWindow.setCentralWidget(self.centralwidget) 
        self.retranslateUi(MainWindow) 
        QtCore.QMetaObject.connectSlotsByName(MainWindow) 

    def retranslateUi(self, MainWindow): 
        _translate = QtCore.QCoreApplication.translate 
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 
        self.pushButton.setText(_translate("MainWindow", "Push Button")) 
        
    def changelabeltext(self): 

        # changing the text of label after button get clicked 
        self.label.setText("You clicked PushButton")     

        # Hiding pushbutton from the main window 
        # after button get clicked. 
        self.pushButton.hide() 

If __name__ == "__main__":
    app = QtWidgets.QApplication (sys.argv)
    
    MainWindow = QtWidgets.QMainWindow() 
    ui = Ui_MainWindow() 
    ui.setupUi(MainWindow) 
    MainWindow.show() 

    sys.exit(app.exec_()) 

在此處輸入圖像描述

在此處輸入圖像描述

如果我理解正確,您希望文本顯示如下:
You clicked
PushButton
為此,請嘗試在單詞之間放置一個換行符,如下所示:
"You clicked \nPushButton"

或者,如果顯示不正確,請嘗試添加一個新的 label,其中包含文本的后半部分,或者增加放置文本的矩形的大小。

盡管從技術上講,您只詢問如何將“You clicked”放在“Pushbutton”下方(可以通過在字符串"You clicked \nPushButton"中添加換行符來完成),但當您這樣做時,您的代碼會遇到另一個基本問題,主要是您通過在帶有 static position 的QRect內繪制小部件來定位小部件。

當您更改文本或 window 大小時,這將產生問題,因為您必須手動更改QRect的坐標以放置在正確的 position 中。

我冒昧地重寫了你的setupUi以使用布局(我建議你研究)而不是QRect的。 希望這會有所幫助,它應該是替代品:

    def setupUi(self, MainWindow): 
        MainWindow.resize(506, 312) 
        self.mainWidget = QtWidgets.QWidget(MainWindow) 

        self.pushButton = QtWidgets.QPushButton()
        self.pushButton.clicked.connect(self.changelabeltext) 
    
        self.label = QtWidgets.QLabel() 
        self.label.setText("")   

        self.hbox = QtWidgets.QHBoxLayout()
        self.hbox.addWidget(self.pushButton)
        self.hbox.addWidget(self.label)

        self.vbox = QtWidgets.QVBoxLayout()
        self.vbox.addLayout(self.hbox)

        self.hbox.setAlignment(QtCore.Qt.AlignCenter)
        self.vbox.setAlignment(QtCore.Qt.AlignCenter)

        self.mainWidget.setLayout(self.vbox)
        MainWindow.setCentralWidget(self.mainWidget) 
        self.retranslateUi(MainWindow) 
        QtCore.QMetaObject.connectSlotsByName(MainWindow) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM