pyqt5 子线程里怎么使用主窗口的控件句柄

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt5 子线程里怎么使用主窗口的控件句柄相关的知识,希望对你有一定的参考价值。

参考技术A 假设有Form1/Form2,Form1上有一Button和Textbox1;Form2上有一个TextBox,

public partial class Form1 : Form

Form2 f=null ;
public Form1()

InitializeComponent();

private void Form1_Load(object sender, EventArgs e)

f = new Form2();
f.Show();

private void button1_Click(object sender, EventArgs e)

if (f == null) return;
foreach (Control c in f.Controls)

if (c is TextBox)

this.textBox1.Text = (c as TextBox).Text;
break;



WPF的用户控件怎么访问主窗体的控件

参考技术A 我有一个用户控件,用户控件被动态加载到主窗体(frm_Manage)里。我想当用户控件被点击后就清空主窗体里Grid控件里的所有子控件。
private void lbl_MenuName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)//frm_Manage为主窗体,Grid_MenuChildren为主窗体的一个控件
var frm = (this.Parent as frm_Manage);
frm.Grid_MenuChildren.Children.Clear();上面这样写的话会报错:frm为null。
------解决方案--------------------------------------------------------使用事件。
主窗口响应事件,把值传给控件。
------解决方案--------------------------------------------------------呃,你把UserControl放MainWindow里不就结了。
WPF的话更建议用数据驱动的思想设计程序。
------解决方案--------------------------------------------------------响应事件的方法比较简单。
用户控件定义好了,在主窗体里完全可以把用户控件当作一个按钮来用。
// #用户控件// 定义public event EventHandler click;
// 被点击时,传递点击事件给外部
if (null != click) click(null, null);// #主窗体// 用户控件的点击事件
userControl.click += (us, ue) => MessageBox.Show("用户控件被点击"); ;
------解决方案--------------------------------------------------------实在不行你就给usercontrol写个SetParent的方法 初始化的时候调用下 把父窗口传递进去 然后用就是了这样基本上可以解决你的问题 但是不是推荐的做法
参考技术B 在winform里用ParentForm很简单就能实现

以上是关于pyqt5 子线程里怎么使用主窗口的控件句柄的主要内容,如果未能解决你的问题,请参考以下文章

wpf 怎么调用子线程窗口的方法?

在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke。

"在创建窗口句柄之前,不能在控件上调用 Invoke 或 BeginInvoke"

Python+PyQT5的子线程更新UI界面的实例《新手必学》

主线程怎么给子线程发送消息

VC TAB控件子对话框如何使用主对话框的成员函数.