失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python切换消息窗_如何使用PyQ在python中的两个窗口之间切换

python切换消息窗_如何使用PyQ在python中的两个窗口之间切换

时间:2018-09-07 20:07:52

相关推荐

python切换消息窗_如何使用PyQ在python中的两个窗口之间切换

我正在开发一些应用程序。我想创建一个工具栏,点击后将打开设置窗口。但是我不知道该怎么做。现在的方法是,我有一个工具栏图标连接到ShowSettings函数。每次我单击图标时,这个函数都会创建一个新的设置实例(我知道它不应该每次都创建一个新实例,而应该在开始时创建一个实例,然后再处理它。但我不知道如何做),然后显示与此实例关联的设置窗口。然而,窗口只会以这种方式闪烁一秒钟。我不知道怎么了希望你能帮助我:)import sys

import time

from PyQt4 import QtCore, QtGui

from ui import Ui_MainWindow

from ui import Ui_SettingsWindow

#Aplikacja obslugujaca bramki LF

#zamiana pliku .ui na kod pythona

#pyuic4 untitled.ui -o output.py

class timerThread(QtCore.QThread):

timeElapsed = QtCore.pyqtSignal(float)

def __init__(self, parent=None):

super(timerThread, self).__init__(parent)

self.timeStart = None

def start(self, timeStart):

self.timeStart = timeStart

return super(timerThread, self).start()

def run(self):

while self.parent().isRunning():

self.timeElapsed.emit(time.time() - self.timeStart)

time.sleep(0.1)

class myThread(QtCore.QThread):

timeElapsed = QtCore.pyqtSignal(float)

def __init__(self, parent=None):

super(myThread, self).__init__(parent)

self.timerThread = timerThread(self)

self.timerThread.timeElapsed.connect(self.timeElapsed.emit)

def run(self):

self.timerThread.start(time.time())

iterations = 10000000000

while iterations:

print "Running {0}".format(self.__class__.__name__)

iterations -= 1

time.sleep(10)

class SettingsWindow(QtGui.QMainWindow):

#Constructor:

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

self.ui_settigns = Ui_SettingsWindow()

self.ui_settigns.setupUi(self)

class MainWindow(QtGui.QMainWindow):

#Constructor:

def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

self.ui = Ui_MainWindow()

self.ui.setupUi(self)

self.myThread = myThread(self)

self.myThread.timeElapsed.connect(self.on_myThread_timeElapsed)

self.myThread.finished.connect(self.on_myThread_finished)

#Nie wiem jak przerzucic to do pliku UI bez errorow

#Toolbar

settingsAction = QtGui.QAction(QtGui.QIcon('tools.jpg'), 'Ustawienia', self)

settingsAction.setShortcut('Ctrl+U')

settingsAction.triggered.connect(self.ShowSettings)

self.toolbar = self.addToolBar('Settings')

self.toolbar.addAction(settingsAction)

def UpdateList(self):

contest_name = boBox.currentText()

#jakis try-catch tutaj sie przyda gdyby nie plik nie istnial

#zczytuje z pliku liste robotow

with open('database\%s.txt' % contest_name) as f:

robots_list = f.read().splitlines()

self.ui.listWidget.clear()

self.ui.listWidget.addItems(robots_list)

def Search(self):

text = self.ui.lineEdit.text()

self.ui.lineEdit.clear()

item = self.ui.listWidget.findItems(text, QtCore.Qt.MatchExactly)

#jakiegos try-catcha trzeba tutaj walnac

self.ui.listWidget.setItemSelected(item[0], True)

def ShowSettings(self):

settings = SettingsWindow() #creates settings instance

settings.show()

@QtCore.pyqtSlot()

def on_button_clicked(self):

self.myThread.start()

@QtCore.pyqtSlot(int)

def on_myThread_timeElapsed(self, seconds):

self.ui.lcdNumber.display(seconds)

@QtCore.pyqtSlot()

def on_myThread_finished(self):

self.myThread.terminate()

print "Done"

if __name__ == "__main__":

app = QtGui.QApplication(sys.argv)

myapp = MainWindow()

settings = SettingsWindow()

myapp.show()

settings.show()

sys.exit(app.exec_())

这是用户界面文件

^{pr2}$

如果觉得《python切换消息窗_如何使用PyQ在python中的两个窗口之间切换》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。