PyQt和动态实验室

2024-06-25 23:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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()

Tags: from文本importselfmessagedefpyqt5layout
1条回答
网友
1楼 · 发布于 2024-06-25 23:31:24

您可以遵循的最简单的方法是简单地使用一个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有多新,但是您发布的代码似乎有一个非常奇怪的缩进。我有些问题要理解你的逻辑。在

相关问题 更多 >