第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關(guān)于直接控制臺到 Pyqt GUI 的兩個問題

關(guān)于直接控制臺到 Pyqt GUI 的兩個問題

Qyouu 2023-08-08 10:51:37
我想將控制臺定向到 Pyqt GUI代碼如下所示class Stream(QtCore.QObject):? ? newText = QtCore.pyqtSignal(str)? ? def write(self, text):? ? ? ? self.newText.emit(str(text))class Window(QtGui.QMainWindow):? ? def __init__(self):? ? ? ? super(Window, self).__init__()? ? ? ? self.setGeometry(50, 50, 500, 300)? ? ? ? self.setWindowTitle("PyQT tuts!")? ? ? ? self.setWindowIcon(QtGui.QIcon('pythonlogo.png'))? ? ? ? self.home()? ? ? ? sys.stdout = Stream(newText=self.onUpdateText)? ? def onUpdateText(self, text):? ? ? ? cursor = self.process.textCursor()? ? ? ? cursor.movePosition(QtGui.QTextCursor.End)? ? ? ? cursor.insertText(text)? ? ? ? self.process.setTextCursor(cursor)? ? ? ? self.process.ensureCursorVisible()? ? def __del__(self):? ? ? ? sys.stdout = sys.__stdout__我有兩個問題。為什么def write(self, text)定義了但不使用里面的參數(shù)是什么Stream(newText=self.onUpdateText)意思,我的pycharm給了我一個警告Unexpected argument
查看完整描述

1 回答

?
桃花長相依

TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊

1. 為什么定義了 def write(self, text) 但沒有使用

print要了解為什么要實現(xiàn) write 方法,只需閱讀內(nèi)置文檔:

打?。?對象,sep='',end='\n',file=sys.stdout,flush=False)

將對象打印到文本流文件,以 sep 分隔,后跟 end。sep、end、file 和flush(如果存在)必須作為關(guān)鍵字參數(shù)給出。

所有非關(guān)鍵字參數(shù)都像 str() 一樣轉(zhuǎn)換為字符串并寫入流中,以 sep 分隔,后跟 end。sep 和 end 都必須是字符串;它們也可以是 None,這意味著使用默認(rèn)值。如果沒有給出對象, print() 將只寫 end。

文件參數(shù)必須是具有 write(string) 方法的對象;如果它不存在或沒有,則將使用 sys.stdout。由于打印的參數(shù)被轉(zhuǎn)換為文本字符串,因此 print() 不能與二進(jìn)制模式文件對象一起使用。對于這些,請使用 file.write(...) 代替。

輸出是否緩沖通常由文件決定,但如果flush關(guān)鍵字參數(shù)為true,則強(qiáng)制刷新流。

版本 3.3 中的更改:添加了lush關(guān)鍵字參數(shù)。

(強(qiáng)調(diào)我的)

如前所述,“print”函數(shù)實現(xiàn)了一個邏輯,可以通過 write 方法將簡單單詞的文本(添加 sep、end 等)寫入默認(rèn)為 sys.stdout 的文件中。

因此,目標(biāo)不是在 sys.stdout 設(shè)備上寫入,而是重定向文本,因此必須修改該方法,以便它通過信號發(fā)送信息newText。

2. Stream(newText=self.onUpdateText) 中的參數(shù)是什么意思,我的pycharm給了我一個警告 Unexpected argument。

默認(rèn)情況下,QObject 可以接收 qproperties 初始值的 kwargs 并建立 qsignals 的連接。在這種情況下,它是第二個選項,所以

sys.stdout?=?Stream(newText=self.onUpdateText)

等于

sys.stdout?=?Stream()
sys.stdout.newText.connect(self.onUpdateText)

Pycharm 指示警告“意外參數(shù)”,因為它指示的邏輯是用 C++ 實現(xiàn)的(通過 SIP),并且 IDE 無法處理它們。跳過它,因為它只是 IDE 的限制。


查看完整回答
反對 回復(fù) 2023-08-08
  • 1 回答
  • 0 關(guān)注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號