标签: wxpython

Tkinter、WxWidgets 和 PyQt、PySide 之间有什么区别?

我想知道 tkinter、wxWidgets 和 PyQt、PySide 等 GUI 工具包之间有什么区别。他们生成类似的小部件,如列表框、文本引擎、按钮、复选框等。我对那里的类似引擎感到困惑。

\n

我现在正在使用 Tkinter,我发现它\xe2\x80\x99s 缺乏复杂的小部件,例如 table 的使用。我之前尝试过使用树视图,但我发现PyQt和PySide中有\xe2\x80\x99s一个名为QTable的小部件。

\n

我对这些名称和不同的用法感到困惑,特别是我无法区分 PyQt 和 Pyside。

\n

哦,此外,我使用的是 Python 3.9 并在 Ubuntu 22.04 上运行。

\n

comparison wxpython tkinter pyqt pyside

2
推荐指数
1
解决办法
2053
查看次数

在Python中使用Eval创建类变量

我写了一个类,让我传入变量类型,变量名,提示和默认值的列表.该类创建一个wxPython面板,该面板显示在一个框架中,该框架允许用户在按下计算按钮并将结果作为绘图返回之前设置输入值.我使用exec语句将所有变量添加到类中.这将所有变量保存在一个类中,我可以通过名称引用它们.

light = Variables( frame , [ ['f','wavelength','Wavelength (nm)',632.8] ,\
                             ['f','n','Index of Refraction',1.0],])
Run Code Online (Sandbox Code Playgroud)

在类中,我使用以下语句创建和设置变量:

for variable in self.variable_list:
       var_type,var_text_ctrl,var_name = variable
       if var_type == 'f' :  
           exec( 'self.' + var_name + ' = ' + var_text_ctrl.GetValue() )
Run Code Online (Sandbox Code Playgroud)

当我需要使用变量时,我可以通过名称引用它们:

 wl = light.wavelength
 n = light.n
Run Code Online (Sandbox Code Playgroud)

然后我读到SO,很少需要在Python中使用exec.这种方法有问题吗?有没有更好的方法来创建一个类,该类包含应该组合在一起的变量,您希望能够编辑,还有用于显示,编辑的代码和wxPython调用(并且还将所有变量保存到文件中)还是再读一遍)?

生硬的

python wxpython scientific-computing

1
推荐指数
1
解决办法
2975
查看次数

Windows中Python编程的最新技术是什么?

我想在家里设置我的开发环境,用于在Python中编写Windows应用程序.

对于我的第一篇文章,我正在编写一个简单的基于表单的应用程序,它将数据输入存储为XML(并且可以读取该信息.)我确实想要设置我专业使用的工具,但是,已经完成了一轮教学编程.

这些天使用的专业python开发人员有哪些工具?为了有一个工作的python环境,我应该使用什么版本的编译器?什么编辑器适用于专业人士?哪些库被认为是每个严肃的python开发人员必备的?

具体来说,哪些Windowing和XML库适合在Windows中工作?

python xml windows ide wxpython

1
推荐指数
1
解决办法
1178
查看次数

合并两个事件循环(Cherrypy和Wxpython)

好的,我有一个用cherrypy编写的应用程序,我想为它构建一个wxpython gui.问题是两个模块都使用闭环进行事件处理,(我假设)意味着当一个运行时另一个将被锁定.

我问了一些建议,建议我合并两个事件循环而不是使用stock entrypoints(quickloop()用于cherrypy和MainLoop()用于wx)

问题是我不知道该怎么做.任何建议将不胜感激.

python wxpython cherrypy

1
推荐指数
1
解决办法
927
查看次数

wxPython:向几个小部件发送信号

我甚至不确定如何提出这个问题.我想要的东西就像wxPython事件系统,但有点不同.我会试着解释一下.

当我的程序发生了某些变化时("树变化",不管那是什么),我想向程序中的所有小部件发送一个信号,通知他们发生了"树木变化",并且应该改变他们的显示作为回应.

我该怎么做呢?听起来有点像wxPython事件,但事实并非如此,因为据我所知,事件并没有传播到所有小部件.

这样做有什么好办法?

python events signals wxpython event-handling

1
推荐指数
1
解决办法
771
查看次数

为什么这段代码不接受这个png图像的透明度?

我已经将问题的原因分离为图像,因为代码似乎与其他具有透明度的png图像一起使用.但是,它似乎不适用于我需要它的一个图像.当我试图制作一个形状漂亮的窗户时,这将是非常有帮助的.

图片:

alt text http://i32.tinypic.com/f1xlj7.png

代码:

import wx

class PictureWindow(wx.Frame):
    def __init__(self, parent, id, title, pic_location):

        # For PNGs. Must be PNG-8 for transparency...
        self.bmp = wx.Image(pic_location, wx.BITMAP_TYPE_PNG).ConvertToBitmap()

        framesize = (self.bmp.GetWidth(), self.bmp.GetHeight())

        # Launch a frame the size of our image. Note the position and style stuff...
        # (Set pos to (-1, -1) to let the OS place it.
        # This style wx.FRAME_SHAPED is a frameless plain window.
        wx.Frame.__init__(self, parent, id, title, size=framesize, pos = (50, 50), style = wx.FRAME_SHAPED) …
Run Code Online (Sandbox Code Playgroud)

python png transparency wxpython shaped-window

1
推荐指数
1
解决办法
838
查看次数

ID上的wxPython .SetFocus()

我只是想知道是否有一种方法可以根据其ID而不是名称来设置wx.TextCtrl()的焦点.

通常你会做...

text = wx.TextCtrl(self, 100, '')
text.SetFocus()
Run Code Online (Sandbox Code Playgroud)

然后焦点设置在文本上.然而,我将有一个未确定数量的wx.TextCtrls,我将有一个循环来制作它们,所有具有不同的ID.我想知道他们是不是这样做的方式?

'id#'.SetFocus() #Set focus to TextCtrl with id = id#
Run Code Online (Sandbox Code Playgroud)

我看到了一种用字典做的方法,但我假设有更好的方法可以做到这一点.

谢谢,

wxpython setfocus

1
推荐指数
1
解决办法
9220
查看次数

在WxPython GUI线程上运行函数

兼职C#程序员在这里试图学习Python.

我希望能够从另一个线程中设置一个将在WxPython中的GUI线程上运行的函数.目前,我能想到这样做的唯一方法是将函数推送到某个跨线程同步列表,然后每隔几毫秒(在GUI线程上)触发一个计时器,该计时器检查列表并运行已推送的任何函数在它上面.我想知道是否有更规范的方式来做这个,类似于BeginInvoke.NET.

python multithreading wxpython

1
推荐指数
1
解决办法
715
查看次数

wxpython TextCtrl和无限循环问题

由于某种原因,TextCtrl在无限循环内时无效,这是我的代码:

   while 1:
        localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        i = i + 1
        #print str(i)

        serRead = ser.readline()
        serSplit = serRead.split(",")

        #this works
        print str(i)+', '+tempOrShock+', '+localtime+', '+serSplit[1]

        #this doesn't
        self.displayTextCtrl.WriteText(str(i)+', '+tempOrShock+', '+
                                        localtime+', '+serSplit[1])
Run Code Online (Sandbox Code Playgroud)

这个无限的while循环在一个按钮点击事件中,我基本上在点击一个按钮后运行一个无限循环并告诉我的TextCtrl不断写出东西并且它不起作用.但是,print语句工作正常.知道为什么会这样吗?

python user-interface wxpython infinite-loop

1
推荐指数
1
解决办法
854
查看次数

让BeautifulSoup4 + lxml与cx_freeze一起工作需要什么?

摘要:

我有一个wxPython/bs4应用程序,我正在使用cx_freeze构建一个exe.

构建成功没有错误,但尝试运行EXE会导致FeatureNotFoundBeautifulSoup4出错.它抱怨我没有安装我的lxml库.

我已经将程序剥离到它的最小状态并仍然得到错误.

有没有其他人使用cx_freeze成功构建bs4应用程序?

请查看下面的详细信息,并告诉我您可能有的任何想法.

谢谢,


细节

完整错误回溯:

我已经将应用程序简化为最基本的状态,但仍然会出错.我在Python 3.4上也得到了同样的错误.

Traceback (most recent call last):
  File "C:\WinPython27\python-2.6.7\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "test.py", line 6, in <module>
  File "C:\WinPython27\python-2.6.7\lib\site-packages\bs4\__init__.py", line 152, in __init__
    % ",".join(feautres))
FeatureNotFound: Couldn't find a tree builder with the features you requested: xml. Do you need to install a parser library?
Run Code Online (Sandbox Code Playgroud)

我已经尝试过的:

我发现有些人说我需要在构建脚本中包含lxml及其依赖项:http://sourceforge.net/p/cx-freeze/mailman/message/27973651/(对不起SF链接).我试过这个,但仍然没有骰子.

注释掉该行soup = BeautifulSoup("<tag>value</tag>", 'xml')不会导致错误.


版本和文件:

版本:

  • lxml 3.4.4
  • BeautifulSoup4 4.3.2
  • Python 2.7.6(32位)和Python …

python lxml wxpython beautifulsoup cx-freeze

1
推荐指数
1
解决办法
905
查看次数