Board logo

標題: [操作疑難] python 求助 [打印本頁]

作者: 電腦盲用戶    時間: 2025-3-14 00:26     標題: python 求助

本人初自學使用python,下例我在主視窗內建立了3個 mdi child,建立後便沒法對各mdi child及內裡object進行操作。
最初只建立一個 mdi child,即使如此,建立後仍沒法 access 哪裡的任一的 mdi child。
objFrom_1.sub,  objFrom_1.mdiArea.sub 都是不行的。
現在是利用各mdi child 的 window title,找到其 hwnd,再作出操作如

mdi_win_hwnd.treeV_1.sortByColumn(1,Qt.AscendingOrder)

但咁樣無可能係正常操作,太過唔正路,search 好耐都找唔到正確操作的例子,所有結果都係 生成 mdi child便完了。

class Worker(QObject):   # 另 thread 定時對 各 mdi 進行操作
    .......
    self.worker_cust_signal_refesh_treeview.emit()
   

class From_1_QMainWindow(QMainWindow):
    count = 0
    def __init__(self):
        super().__init__()

        self.mdiArea = QMdiArea(self)

    ...........

    self.create_3_mdi_child()
    ...........

    def create_3_mdi_child(self):
        From_1_QMainWindow.count += 1
        for j in range(3):
            sub = QMdiSubWindow()               
            sub.treeV_1=QTreeView(sub)  
            .........                   
            sub.setWindowTitle("MDI child " + str(From_1_QMainWindow.count))
            .........

            self.mdiArea.addSubWindow(sub)
            
            
    def worker_cust_signal_refesh_treeview(self):
        ####    建立 3個 mdi child 後便無法再 對 3個 mdi child 及內裡物件作任何操作

if __name__ == '__main__':   
    App = QApplication(sys.argv)
        .......
    objFrom_1 = From_1_QMainWindow()
   
    GetWindowRectFromName(objFrom_1.windowTitle())    ## 可以對 objFrom_1 操作, 但怎對  objFrom_1 內的3個 mdi child 作出操作????
作者: cyberyeah    時間: 2025-3-14 06:16

本人初自學使用python,下例我在主視窗內建立了3個 mdi child,建立後便沒法對各mdi child及內裡object進行 ...
電腦盲用戶 發表於 2025-3-14 00:26

問AI喇

via HKEPC IRF 5.1.14 - Android(5.1.2)
作者: 電腦盲用戶    時間: 2025-3-14 09:18

本帖最後由 電腦盲用戶 於 2025-3-14 09:42 編輯
問AI喇

via HKEPC IRF 5.1.14 - Android(5.1.2)
cyberyeah 發表於 2025-3-14 06:16


剛試了問AI,https://www.aichatting.net/ 。成功與否有待驗證。

我獲得了如下答案。
"在 PyQt 中,MDI (Multiple Document Interface) 是一个允许用户同时处理多个子窗口的界面。当你创建 MDI 子窗口后,你可以通过对这些子窗口对象的引用来进行操作,而不是使用窗口句柄(hwnd)的方式。......."

嘿嘿,用 hwnd 來操作實確唔正路,窒我確係正中核心,我都知啦,呢個做法係類似用gdi32.dll,MS window產物呀,唔會係其他OS操作。其提供的解決辦法,稍後試下。
作者: s20012797    時間: 2025-3-14 23:44

本帖最後由 s20012797 於 2025-3-14 23:46 編輯

class From_1_QMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.mdiArea = QMdiArea(self)
        self.setCentralWidget(self.mdiArea)
        self.sub_windows = []  # 新增:用於保存子窗口引用

    def create_3_mdi_child(self):
        From_1_QMainWindow.count += 1
        for j in range(3):
            sub = QMdiSubWindow()
            sub.treeV_1 = QTreeView(sub)  # 將treeView附加到子窗口
            sub.setWidget(sub.treeV_1)    # 必須設置為子窗口的widget
            sub.setWindowTitle(f"MDI child {From_1_QMainWindow.count}-{j}")
            self.mdiArea.addSubWindow(sub)
            sub.show()
            self.sub_windows.append(sub)  # 保存子窗口引用

    def refresh_all_treeviews(self):
        # 通過QMdiArea官方接口訪問
        for sub in self.mdiArea.subWindowList():
            sub.widget().sortByColumn(1, Qt.AscendingOrder)  # 通過widget()獲取treeView

明就明,吾明系咁先
作者: 電腦盲用戶    時間: 2025-3-14 23:55

本帖最後由 電腦盲用戶 於 2025-3-14 23:58 編輯

試了 AI 提供的方案,確實可以 access 各 mdi child。
再看真,其解決方案也是使用 hwnd?只是用其它方法得到 hwnd,但確實是較易得到 hwnd。
AI給出的方案如下:

class From_1_QMaindindow(QMainWindow):
        self.mdi_sub_windows = []  # 用于存放子窗口的引用


    def create_3_mdi_child(self):
......
        self.mdi_sub_windows.append((sub, tree_view))  # 保存子窗口和其树视图的引用
......


mdi_sub_windows 內各 sub,便是 hwnd。只是更容易,直接地得到 hwnd。
而根本不需要把tree_view或各object也加進去,mdi_sub_windows[0].treeview_1, mdi_sub_windows[1].textbox_1...可成功對各物件操作。

用 AI 問嘢,真係唔駛出post ,亦都唔駛 去stackoverflow,即刻就有滿意答案。
作者: 電腦盲用戶    時間: 2025-3-15 00:02

本帖最後由 電腦盲用戶 於 2025-3-15 00:08 編輯
class From_1_QMainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        se ...
s20012797 發表於 2025-3-14 23:44


謝謝C兄,我的AI答案跟你差不多。謝謝你啦,你真是幫上大忙啦。
你用的是哪個網站的AI?好像比我用的更接近提問提供的code。

重點是
self.sub_windows.append(sub)  # 保存子窗口引用

你的方案多了
for sub in self.mdiArea.subWindowList():   
這個有空再試驗,先用可行方法,再找個正路方法。
作者: s20012797    時間: 2025-3-15 09:49

謝謝C兄,我的AI答案跟你差不多。謝謝你啦,你真是幫上大忙啦。
你用的是哪個網站的AI?好像比我用的更接 ...
電腦盲用戶 發表於 2025/3/15 00:02


如果問Ai吾好用中文腦諗野
我係本地用meta-llama/Llama-3.1-8B
作者: 電腦盲用戶    時間: 2025-3-15 12:20

如果問Ai吾好用中文腦諗野
我係本地用meta-llama/Llama-3.1-8B
s20012797 發表於 2025-3-15 09:49


謝謝。

for sub in self.mdiArea.subWindowList():   

這個也試過可行的,可以對 各mdi child 內物件進行操作。
作者: hkguy2020    時間: 2025-3-15 12:46

本帖最後由 hkguy2020 於 2025-3-15 12:47 編輯

咁多個 AI, 我覺得 ChatGpt 較突出, 但一問到好新 specific 嘅嘢, 都係無咩用, 要自己不斷搵, 所有嘢組織埋一齊, 例如我問 ChatGpt: write a custom langchain wrapper for rkllm (因為 LangChain 無 standard library for rkllm), 答咗等如無答.

尋晚問 ChatGpt:  if there Langchain standard library for rkllm? (rkllm 係類似 Ollama), ChatGpt 答:

No, there isn't an official LangChain integration for RKLLM yet. However, you can create a custom LangChain wrapper to interact with RKLLM, similar to how other local LLM runners like Ollama, LM Studio, and GPTQ are integrated.

但事實係 LangChain 有 standard library for Ollama (都好耐), 我反問:

I agree that ChatGpt is very advance and the data on it is very update, but the answer Chatgpt provided like Langchain does not have standard library for Ollama is wrong. It is called by using 'from langchain_ollama.llms import OllamaLLM' What do you think?

答: You're absolutely right! LangChain does have an official integration for Ollama via langchain_ollama. My initial response was incorrect in saying that it doesn't have a "standard library" for it.

For Ollama, you can use:

from langchain_ollama import Ollama
llm = Ollama(model="mistral")

So yes, LangChain has a dedicated module for Ollama.

For RKLLM, though, there is no official LangChain integration yet—so we'd need to create a custom wrapper, similar to how langchain-community supports other local models. Thanks for catching that, and I appreciate your attention to detail! 🚀

所以 AI 唔好信哂.
作者: javacomhk    時間: 2025-3-15 13:26

你無比錢買plus 或pro 梗係唔係最 updated 沒得用最強勁嘅 ChatGPT Search 啦。如果 free user 都用到的最新 model 邊有人比錢啊!
作者: ckyuen2    時間: 2025-3-15 13:52

本帖最後由 ckyuen2 於 2025-3-15 13:54 編輯

唔俾錢都仲可以問多幾個

Grok 3 [限次數] / Qwen 2.5 max or coder / QwQ / 豆包
Llama 3.2-3.3 / DS 甚至弱如Le Chat都不妨玩吓
作者: hkguy2020    時間: 2025-3-15 14:42

我買咗 openai api credit, 問 ChatGpt:
if using openai api after buying credit, the query result is same as the ChatGpt paid verion (plus or pro) ?

答:
[attach]2469263[/attach]

試吓用 openai api (= ChatGPT Plus) 嚟問, 睇吓係唔係勁啲.
作者: javacomhk    時間: 2025-3-15 15:55

Pro 用家係可以試最新 Model 4.5 另外 API 係用唔到 chatGPT Search
例如你問呢個問題,只有 ChatGPT Search 先比到最 update 嘅答案

[attach]2469270[/attach]
作者: hkguy2020    時間: 2025-3-16 05:04

本帖最後由 hkguy2020 於 2025-3-16 07:56 編輯

喺我嘅 openai api platform, 可以試到 gpt4.5. 試問過, 好狠勁.
[attach]2469330[/attach]





歡迎光臨 電腦領域 HKEPC Hardware (https://h2.hkepc.com/forum/) Powered by Discuz! 7.2