二维码
易分讯

扫一扫关注

pythongui控件关联_python控件可以直接拖么

   更新时间:    发布时间:2天前    

大家好,关于pythongui控件关联很多朋友都还不太明白,今天小编就来为大家分享关于python控件可以直接拖么的知识,希望对各位有所帮助!

随着科技的发展,越来越多的应用软件开始注重用户体验,而Pythongui控件作为构建用户界面的重要工具,其关联性问题也日益受到重视。本文将深入探讨Pythongui控件关联的相关知识,帮助读者了解如何打造个性化的用户界面。

一、Pythongui控件简介

让我们先了解一下什么是Pythongui控件。Pythongui是一种基于Python的图形用户界面开发工具,它可以帮助开发者快速搭建出美观、实用的用户界面。Pythongui支持多种图形界面库,如Tkinter、PyQt、wxPython等。

二、Pythongui控件关联的重要性

1. 提升用户体验:通过合理的控件关联,可以使界面布局更加清晰,操作更加便捷,从而提升用户体验。

2. 增强交互性:控件关联可以实现在界面上进行数据的动态更新、验证等功能,提高软件的交互性。

3. 便于维护:良好的控件关联有助于减少代码冗余,便于后续的维护和升级。

三、Pythongui控件关联的方法

我们将介绍几种常见的Pythongui控件关联方法。

1. 基于关联

关联是一种常用的控件关联方法,通过监听某个控件的特定,实现对其他控件的相应操作。

示例代码

```python

from tkinter import

root = Tk()

entry = Entry(root)

button = Button(root, text="

Python DearPyGui 常用控件一

菜单栏是一个 GUI应用中重要的控件,始终显示在窗口顶部,并具有三个主要部分:

菜单可以根据需要嵌套,而且任何控件都可以添加到菜单中,例如下面栗子中的“控件列表”菜单。

通过select_directory_dialog来调用目录对话框,而且必须为其提供回调方法。回调方法返回的data参数中将包含目录路径和文件夹路径。目录对话框是由另一个控件(例如下面栗子中的按钮)调用的。

通过open_file_dialog可以调用文件对话框,同样,必须为其提供回调方法,回调方法返回的data参数中将包含目录路径和文件名称。 extensions是文件对话框的可选参数,可以设置对文件扩展名的过滤,控制显示哪些后缀名的文件。

Dear PyGui具有simple_plot(简单绘图)和plot(绘图)两个绘图方式,两者都是动态的。 simple_plot(简单绘图)接受列表参数,并基于列表中的数据数据绘制y轴数据,可以是折线图或直方图。

而plot(绘图)则具有更多的功能,绘图同时使用x轴和y轴坐标,使用add_plot方法创建,然后可以将数据作为线形图或散布图添加, plot(绘图)的特点有:

鼠标停留在绘图上时,会出现数值类型的浮动文本。

通过set_value方法可以更改绘图调用的值,使simple_plot(简单绘图)实现动态实时绘制。

同样的, plot(绘图)也可以动态实时绘制,举个栗子,我们使用set_render_callback设置一个渲染回调实现动态绘制。

Dear PyGui有一个低级绘图 API,可以用来原始绘画、自定义控件甚至动态绘画。先通过调用add_drawing方法开始绘画,再通过调用各种绘画方法来添加笔画。需要注意的是,画布的原点位于左下角。

绘画( drawing)具有可以获取和设置的缩放( origin)、原点( origin)和尺寸( size)属性,缩放( origin)是x和y值的乘数,尺寸( size)以像素为单位。

绘画( drawing)可以显示的图像类型有.png、.jpg、.bmp,使用时需掉用draw_image以绘制图像。通过pmin和pmax参数,我们可以将图像绘制到画布上矩形的左上和右下区域,图像会缩放自动缩放以适应指定区域。

使用uv_min和uv_max参数,我们可以控制图像要绘制到哪个区域的标量(scalar),默认情况下, uv_min= [0,0]和uv_max= [1,1]将显示整个图像,而uv_min= [0,0]和uv_max= [0.5,0.5]则仅显示图形的一部分。

尽管我们可以通过清除和重绘整个图来实现图形的动态化,但是 DearPyGui还提供了一种更有效的方法,要使绘画( drawing)动态化,应该使用tag参数标记要重绘的控件,只要使用相同的标签去调用。这样,我们就能实现仅清除该控件,并将其重新绘制。

Python GUI库大汇总

所有程序都是基于命令行的,这些程序可能只有一些“专业”的计算机人士才会使用。例如前面编写的五子棋等程序,恐怕只有程序员自己才愿意玩这么“糟糕”的游戏,很少有最终用户愿意对着黑乎乎的命令行界面敲命令。

相反,如果为程序提供直观的图形用户界面(Graphics User Interface, GUI),最终用户通过拖动鼠标、单击等动作就可以操作整个应用,这样的应用程序就会很受政迎(实际上,Windows之所以广为人知,其最初的吸引力就是来自它所提供的图形用户界面)。

作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到“爽”,程序才会被需要、被使用,这样的程序才有价值。

在真正开始介绍 Python图形界面编程之前,首先简单介绍一下 Python的图形用户界面库。

1) PyGObject

PyGObject库为基于 GObject的 C函数库提供了内省绑定,这些库可以支持 GTK+3图形界面工具集,因此时 GObject提供了丰富的图形界面组件。

2) PyGTK

PyGTK基于老版本的 GTK+2的库提供绑定,借助于底层 GTK+2所提供的各种可视化元素和组件,同样可以开发出在 GNOME桌面系统上运行的软件,因此它主要适用于 Linux/UNIX系统。PyGTK对 GTK+2的 C语言进行了简单封装,提供了面向对象的编程接口。其官方网址是。

3) PyQt

PyQt是 Python编程语言和 Qt库的成功融合。Qt本身是一个扩展的 C++ GUI应用开发框架,Qt可以在 UNIX、Windows和 Mac OS X上完美运行,因此 PyQt是建立在 Qt基础上的 Python包装。所以 PyQt也能跨平台使用。

4) PySide

PySide是由 Nokia提供的对 Qt工具集的新的包装库,目前成熟度不如 PyQt。

5) wxPython

wxPython是一个跨平台的 GUI工具集,wxPython以流行的 wxWidgets(原名 wxWindows)为基础,提供了良好的跨平台外观。简单wxPython在 Windows上调用 Windows的本地组件、在 Mac OS上调用 Mac OS X的本地组件、在 Linux上调用 Linux的本地组件,这样可以让 GUI程序在不同的平台上显示平台对应的风格。wxPython是一个非常流行的跨平台的 GUI库。

如果读者有需要,则完全可以选择上面这些 Python GUI库来开发图形用户界面。如果考虑开发跨平台的图形用户界面,则推荐使用 PyQt或 wsPython。

Python 中用 Tkinter GUI编程

可以使用sqlite,下面是使用方法。

导入PythonSQLITE数据库模块

Python2.5之后,内置了SQLite3,成为了内置模块,这给我们省了安装的功夫,只需导入即可~

importsqlite3

2.创建/打开数据库

在调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开。

cx=sqlite3.connect("E:/test.db")

也可以创建数据库在内存中。

con=sqlite3.connect(":memory:")

3.数据库连接对象

打开数据库时返回的对象cx就是一个数据库连接对象,它可以有以下操作:

commit()--事务提交

rollback()--事务回滚

close()--关闭一个数据库连接

cursor()--创建一个游标

关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

4.使用游标查询数据库

我们需要使用游标对象SQL语句查询数据库,获得查询对象。通过以下方法来定义一个游标。

cu=cx.cursor()

游标对象有以下的操作:

execute()--执行sql语句

executemany--执行多条sql语句

close()--关闭游标

fetchone()--从结果中取一条记录,并将游标指向下一条记录

fetchmany()--从结果中取多条记录

fetchall()--从结果中取出所有记录

scroll()--游标滚动

1.建表

cu.execute("createtablecatalog(idintegerprimarykey,pidinteger,namevarchar(10)UNIQUE,nicknametextNULL)")

上面语句创建了一个叫catalog的表,它有一个主键id,一个pid,和一个name,name是不可以重复的,以及一个nickname默认为NULL。

2.插入数据

请注意避免以下写法:

Neverdothis--insecure会导致注入攻击

pid=200

c.execute("...wherepid=&39;%s&39;"%pid)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。

fortin[(0,10,&39;abc&39;,&39;Yu&39;),(1,20,&39;cba&39;,&39;Xu&39;)]:

cx.execute("insertintocatalogvalues(?,?,?,?)",t)

简单的插入两行数据,不过需要提醒的是,只有提交了之后,才能生效.我们使用数据库连接对象cx来进行提交commit和回滚rollback操作.

cxmit()

3.查询

cu.execute("selectfromcatalog")

要提取查询到的数据,使用游标的fetch函数,如:

In[10]:cu.fetchall()

Out[10]:[(0,10,u&39;abc&39;,u&39;Yu&39;),(1,20,u&39;cba&39;,u&39;Xu&39;)]

如果我们使用cu.fetchone(),则首先返回列表中的第一项,再次使用,则返回第二项,依次下去.

4.修改

In[12]:cu.execute("updatecatalogsetname=&39;Boy&39;whereid=0")

In[13]:cxmit()

注意,修改数据以后提交

5.删除

cu.execute("deletefromcatalogwhereid=1")

cxmit()

6.使用

请先确定你的IDE或者系统默认编码是utf-8,并且在前加上u

x=u&39;鱼&39;

cu.execute("updatecatalogsetname=?whereid=0",x)

cu.execute("selectfromcatalog")

cu.fetchall()

[(0,10,u&39;\u9c7c&39;,u&39;Yu&39;),(1,20,u&39;cba&39;,u&39;Xu&39;)]

如果要显示出字体,那需要依次打印出每个字符串

In[26]:foritemincu.fetchall():

....:forelementinitem:

....:printelement,

....:print

....:

010鱼Yu

120cbaXu

7.Row类型

Row提供了基于索引和基于名字大小写敏感的方式来访问列而几乎没有内存开销。原文如下:

sqlite3.Rowprovidesbothindex-basedandcase-insensitivename-basedaccesstocolumnswithalmostnomemoryoverhead.Itwillprobablybebetterthanyourowncustomdictionary-basedapproachorevenadb_rowbasedsolution.

Row对象的详细介绍

classsqlite3.Row

ARowinstanceservesasahighlyoptimizedrow_factoryforConnectionobjects.Ittriestomimicatupleinmostofitsfeatures.

Itsupportsmappingaccessbycolumnnameandindex,iteration,representation,equalitytestingandlen().

IftwoRowobjectshaveexactlythesamecolumnsandtheirmembersareequal,theycompareequal.

Changedinversion2.6:Addediterationandequality(hashability).

keys()

Thismethodreturnsatupleofcolumnnames.Immediatelyafteraquery,itisthefirstmemberofeachtupleinCursor.description.

Newinversion2.6.

下面举例说明

In[30]:cx.row_factory=sqlite3.Row

In[31]:c=cx.cursor()

In[32]:c.execute(&39;selectfromcatalog&39;)

Out[32]:<sqlite3.Cursorobjectat0x05666680>

In[33]:r=c.fetchone()

In[34]:type(r)

Out[34]:<type&39;sqlite3.Row&39;>

In[35]:r

Out[35]:<sqlite3.Rowobjectat0x05348980>

In[36]:printr

(0,10,u&39;\u9c7c&39;,u&39;Yu&39;)

In[37]:len(r)

Out[37]:4

In[39]:r[2]使用索引查询

Out[39]:u&39;\u9c7c&39;

In[41]:r.keys()

Out[41]:[&39;id&39;,&39;pid&39;,&39;name&39;,&39;nickname&39;]

In[42]:foreinr:

....:printe,

....:

010鱼Yu

使用列的关键词查询

In[43]:r[&39;id&39;]

Out[43]:0

In[44]:r[&39;name&39;]

Out[44]:u&39;\u9c7c&39;

关于本次pythongui控件关联和python控件可以直接拖么的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。


特别提示:免责声明:本网站(以下简称“本站”)所提供的内容均来自于互联网收集或转载,目的在于传递更多信息,仅供用户参考,不代表本站立场,本站不对该内容的准确性、真实性或合法性承担任何责任。本站致力于保护知识产权,并尊重所有合法权益。由于互联网的开放性,本站无法对收集的所有内容进行证实,故请自行决定是否采用,如需采用风险自负。如果您认为本站的某些内容侵犯了您的合法权益,请通过电子邮件与我们联系投诉相关问题:[482477792@qq.com]。请注意您应确保所提供的侵权投诉信息真实、准确(发送邮件时请附带相关的知识产权材料或其他证明文件等以供核实,否则我们无法辨别。)收到来信后我们将尽快审核相关内容,并在必要时采取适当措施(包括但不限于删除侵权内容)。文章内容均来源于互联网整理和汇编,不代表本站的观点,本站不对该文章内容给予任何保证、暗示或承诺,严禁浏览者根据内容形成判断与决定,浏览者所做的任何判断与决定都与本站无关,请谨慎作出决定,如发现本站有涉嫌抄袭侵权/违法违规的内容, 请及时联系我们的邮箱,一经查实,本站将立刻处理,感谢您的配合!


举报 0 收藏 0 评论 0
推荐行情

赣ICP备2024039802号-13

免责声明:本网站(以下简称“本站”)所提供的内容均来自于互联网收集或转载,目的在于传递更多信息,仅供用户参考,不代表本站立场,本站不对该内容的准确性、真实性或合法性承担任何责任。本站致力于保护知识产权,并尊重所有合法权益。由于互联网的开放性,本站无法对收集的所有内容进行证实,故请自行决定是否采用,如需采用风险自负。如果您认为本站的某些内容侵犯了您的合法权益,请通过电子邮件与我们联系投诉相关问题:[482477792@qq.com]。请注意您应确保所提供的侵权投诉信息真实、准确(发送邮件时请附带相关的知识产权材料或其他证明文件等以供核实,否则我们无法辨别。)收到来信后我们将尽快审核相关内容,并在必要时采取适当措施(包括但不限于删除侵权内容)。文章内容均来源于互联网整理和汇编,不代表本站的观点,本站不对文章内容给予任何保证、暗示或承诺,严禁浏览者根据内容形成判断与决定,浏览者所做的任何判断与决定都与本站无关,请谨慎作出决定,如发现本站有涉嫌抄袭侵权/违法违规的内容, 请及时联系我们的邮箱,一经查实,本站将立刻处理,谢谢配合!