网站如何做关,丰涵网站建设,福安网站定制,35开始学网站开发tkinter-TinUI-xml实战#xff08;10#xff09;展示画廊 引言声明文件结构核心代码主界面统一展示控件控件展示界面单一展示已有展示多类展示 最终效果在这里插入图片描述  ………… 结语 引言… tkinter-TinUI-xml实战10展示画廊 引言声明文件结构核心代码主界面统一展示控件控件展示界面单一展示已有展示多类展示 最终效果在这里插入图片描述  ………… 结语 引言
首先我也不知道Gallery直接翻译成“画廊”合不合适这里参考现在有些UI库做展示界面的词比如“WinUI3 Gallery”。
TinUI是有自己的展示界面的即直接运行TinUI.py时展示。这个界面比较混乱实际上是我自己在捣鼓新控件或新样式时用的快速打开界面我把每个控件随便放到一个位置每次对控件的更改运行一下就知道了。 但是在此之前也有人提到这样的展示界面太混乱了。
那么我就写一个新的吧。
新展示界面拥有如下特性 使用xml编写更简洁。 控件按英文首字母排序以供选择。 不替代原本展示界面因为我自己要用。
开始。 声明
本项目属于作者原创。借鉴了GitHub/TinUI上的tuxml.py翻版必究但可以自行添加功能代码。
本项目使用的TinUI为我开源并维护在GitHub上的主文件——TinUI.py。当然使用PYPI中下载安装的tinui也可以。 文件结构
这次文件结构并不复杂只不过每个控件都有自己的xml展示界面所以显得比较多而已。
这个展示界面的主文件maintest.py在TinUI的\test下。
所有界面xml文件都在\test\testpage目录下。 核心代码
主界面
主界面主要由标题、图标、控件选择器、控件展示区构成。前三者为左侧一行控件展示区独自占右侧的大部分面积。
主界面main.xml如下
tinui
linelinetitle textTinUI Gallery/title/linelineimage width200 height200 imgfiletest\LOGO.png/image/linelinelistbox height320 bg#f0f0f0 dataself.datas[controls] commandself.funcs[loadcontrol]controls/listbox/lineui bg#f0f0f0 width590 height570 scrollbarTrue regionautodisplayui/ui
/line
/tinui对应的功能代码maintest.py如下
import sys
sys.path.append(..)
from TinUI import *
from tkinter import Tkdef loadcontrol(controlname):...xmlfopen(rtest\testpage\main.xml,r)
xmlxmlf.read()
xmlf.close()window Tk()
window.resizable(False,False)
window.iconbitmap(LOGO.ico)
window.title(TinUI main test)
window.geometry(850x60055)
uiBasicTinUI(window)
uixTinUIXml(ui)uix.funcs[loadcontrol]loadcontrol
uix.datas[controls][back, button, button2, canvas, checkbutton, combobox, entry, expander, image, info, label, labelframe,link, listbox, listview, menubar, menubutton, notebook, notecard, onoff, paragraph, passwordbox, picker, pipspager, pivot, progressbar, radiobox, radiobutton, ratingbar, scalebar, scrollbar, separate, spinbox, swipecontrol, table, textbox, title, togglebutton, tooltip, treeview, ui, waitbar, waitframe]
uix.loadxml(xml)
displayui,_,duixml,_uix.tags[displayui]ui.pack(fillboth,expandTrue)
window.mainloop()统一展示控件
从上面的代码可以看出包含所有控件名称的listbox绑定了loadcontrol函数。为了简化展示操作我们统一用controlname变量指代对应的xml界面文件对于部分特例控件则使用判断语句进行创建后的操作。
def loadcontrol(controlname):global load_menubar#导入控件说明cfileopen(test/testpage/controlname.xml,moder,encodingutf-8)cxmlcfile.read()cfile.close()duixml.clean()duixml.loadxml(cxml)if controlnamecanvas:canvasduixml.tags[canvas][0]canvas.create_text((5,5),text画布对象文字。\n需要获取add_canvas的第一个返回值,font微软雅黑 12,anchornw)elif controlnameexpander:expanderduixml.tags[expander][2]expander.loadxml(tinuilinebutton2 text拓展UI框架的按钮/button2/linelineparagraph text拓展UI框架可以节省布局位置能够使用TinUIXml为可拓展UI框架编写界面布局。 width190/paragraph/linelineparagraph text感觉如何 width190/paragraph/linelineratingbar/ratingbar/line/tinui)elif controlnamemenubar:labelduixml.tags[label][-1]displayui.add_menubar(label)elif controlnamenotebook:notebookduixml.tags[notebook][-2]for i in range(1,5):if i5:#第五个不可删除:notebook.addpage(teststr(i),tstr(i),cancancelFalse)else:notebook.addpage(teststr(i),tstr(i))elif controlnamewaitframe:waitframeduixml.tags[waitframe][-2]waitframe.start()这里主要是menubar无法直接展示notebook, expander, canvas等需要创建后进一步操作来展示。这些操作代码实际上都是直接取自TinUI本身的展示窗口。
控件展示界面
以下给出三种类型的xml界面是有统一模板的。
单一展示
以back.xml为例
tinui
linelinetitle textback/title/linelineparagraph textTinUI的背景控件用来呈现不同控件组的层次。 width580/paragraph/linelineparagraph text width580/paragraph/linelineparagraph text下方就是backp1/paragraphbutton2 text本按钮与左边文字构成控件组b1/button2back uids(b1,p1) bgyellow fgyellow/back/line
/line
/tinui已有展示
比如paragraph, scrollbar等已经在本界面中出现了的。
以scrollbar.xml为例
tinui
linelinetitle textscrollbar/title/linelineparagraph textTinUI的滚动条控件。见展示区域的右侧和下方。 width580/paragraph/linelineparagraph text width580/paragraph/lineline/line
/line
/tinui多类展示
比如等待框在TinUI里有三种类型直接一起展示在主界面中也只显示waitbar一个选项。
以waitbar.xml为例
tinui
linelinetitle textwaitbar/title/linelineparagraph textTinUI的等待框控件。用waitbar(1,2,3)区分。 width580/paragraph/linelineparagraph text width580/paragraph/linelineparagraph text扇形滚动框/paragraphwaitbar1/waitbar1/linelineparagraph text width580/paragraph/linelineparagraph text点状滚动框/paragraphwaitbar2/waitbar2/linelineparagraph text width580/paragraph/linelineparagraph text条带滚动框/paragraphwaitbar3/waitbar3/line
/line
/tinui最终效果 …………
结语
到此我们已经完成了一个简介简单的TinUI控件展示程序。该程序会随TinUI5发布作为TinUI5的重大更新之一。
tkinter创新