PyQt和动态标签

时间:2017-05-24 13:45:05

标签: python python-3.x pyqt pyqt5

我仍然是python和我正在编写的应用程序的新手我真的想保持窗口打开并在选择OK时更改标签的文本。文本存储在配置文件中,这不是问题。我可以将它带入列表或字典。我只是不确定按下按钮时如何循环显示文本。我可以得到第一个和最后一个文本。我只是失去了实现这一目标的最佳流程或逻辑。

我已经生成了应用程序是tkinter,但也无法在那里实现此功能。我现在正在使用PyQt,因为它的限制较少。

代码看起来像这样:

import configparser
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import * 
import sys
import random

appGlobal = {'dialogCount':0}
class GameDialog(QDialog):
    def __init__(self):
        QDialog.__init__(self)
        layout = QGridLayout(self)
        lblWBS = QLabel("lblWBS")
        lblDialog = QLabel("lblDialog")
        btnOK = QPushButton("OK")
        layout.addWidget(btnOK, 5, 1)

        lblDialog = QLabel()

        layout.addWidget(lblWBS, 0, 1)
        layout.addWidget(lblDialog, 1, 1)

        def npcDialog():
            lblDialog.setText(message[appGlobal['dialogCount']])
            layout.removeWidget(lblDialog)
            layout.addWidget(lblDialog, 1, 1)
            appGlobal['dialogCount'] =+ 1
        npcDialog()
        btnOK.clicked.connect(npcDialog)
        self.setWindowTitle("PALCDMS")

def kickoffMeeting():
    kickoff_meeting = config['kickoffDialog']
    global message
    message = []
    for name in kickoff_meeting:

        string_value = config.get('kickoffDialog', name)
        message.append(string_value)

    app = QApplication(sys.argv)
    dialog = GameDialog()
    dialog.show()
    app.exec_()

kickoffMeeting()

1 个答案:

答案 0 :(得分:0)

您可以遵循的最简单的方法是简单地使用QPushButton,将其点击与您执行行为的函数相连接即可。我尽可能简单地得到了一些例子,看看它是否有意义。

import sys

from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QHBoxLayout
from PyQt5.QtWidgets import QLabel
from PyQt5.QtWidgets import QPushButton

import random


class Label(QLabel):

    def __init__(self):
        super(Label, self).__init__()

        self.letters = ['q','w','e','r','t','y']

        self.h_layout = QHBoxLayout()
        self.setLayout(self.h_layout)

        self.label = QLabel('Random letters: _')
        self.btn = QPushButton("Roll")
        self.btn.clicked.connect(self.change_label)

        self.h_layout.addWidget(self.label)

        self.h_layout.addWidget(self.btn)

    def change_label(self):
        if len(self.letters)>0:
            self.label.setText(self.letters.pop(0))




if __name__=="__main__":
    app = QApplication(sys.argv)
    main_label = Label()
    main_label.show()
    sys.exit(app.exec_())

我认为你最大的问题是你的缩进。不知道你有多新的python,但你发布的代码似乎有一个非常奇怪的缩进。我有一些问题需要理解你的逻辑。