0
我使用self.close
來關閉正在運行的小部件。整個代碼如下:終止QWidget不起作用
class timeTracker(QWidget):
'''time tracker main application v_0.8'''
def __init__(self, parent=None):
super(timeTracker, self).__init__(parent)
self.grid = QGridLayout()
self.setLayout(self.grid)
while not self.connectivity():
print(self.connectivity())
ret = QMessageBox.warning(self, "Not connected to network. Please check the connection", "", QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if ret == QMessageBox.No:
self.close()
qApp.quit()
break
qApp.quit()
# self.time_widget = timeline.timeWidget()
# self.grid.addWidget(self.time_widget, 0, 0)
def connectivity(self):
try:
urllib.request.urlopen("http://www.google.com", timeout=1)
return True
except urllib.error.URLError as error:
return False
if __name__ == "__main__":
application = QApplication(sys.argv)
main_widget = timeTracker()
main_widget.show()
main_widget.move(10, 10)
sys.exit(application.exec_())
我從這個代碼想到的是,只要連接函數返回True時,用戶將反覆要求做某些動作,如果他們單擊是。如果他們點擊否,我想終止整個小部件。但是當我點擊「否」時,它會在self.close之後經過這些行。我能做些什麼來真正終止程序?
什麼是'check_function()'? – eyllanesc
對於GUI設計來說,阻塞循環不方便用戶使用,還有其他選項,如使用QTimers。但隨着你提供的代碼是不可能幫助你的。 – eyllanesc
@eyllanesc'check_function()'實際上檢查網絡連接,點擊yes將檢查網絡,如果連接,則發出False並進入下一個代碼。但是單擊否,因此執行self.close()不會關閉正在運行的應用程序。 – Mike