与Tkinter和wxPython一起玩了一下,我觉得Tkinter在源代码的外观方面要好得多.但是,它似乎没有那么多功能; 特别是它没有标签(如Firefox窗口顶部的标签).
关于这个主题的一点点Google搜索提供了一些建议.有一个类的食谱条目允许你使用标签,但它非常原始.在SourceForge上还有Python megawidgets,虽然这看起来很旧并且在安装过程中给了我错误.
有没有人有经验在Tkinter中制作标签式GUI?你用了什么?或者只是需要更强大的窗口组件的人必须使用wxPython?
我试图像这样设置一个应用程序图标(python3/tkinter):
Interface()
root.title("Quicklist Editor")
root.iconbitmap('@/home/jacob/.icons/qle_icon.ico')
root.resizable(0, 0)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我都会收到一条错误消息(闲置),说:
return self.tk.call('wm', 'iconbitmap', self._w, bitmap)
_tkinter.TclError: error reading bitmap file "/home/jacob/.icons/qle_icon.ico"
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
使用谷歌(和这个网站)我看到了一些类似的问题,但我的问题仍然存在:
"我想绘制一个图像(不读取文件),能够操纵该图像中每个像素的颜色."
我看到另一个问题,建议做这样的事情:
from tkinter import *
A=Tk()
B=Canvas(A)
B.place(x=0,y=0,height=256,width=256)
for a in range(256):
for b in range(256):
B.create_line(a,b,a+1,b+1,fill=pyList[a][b])#where pyList is a matrix of hexadecimal strings
A.geometry("256x256")
mainloop()
Run Code Online (Sandbox Code Playgroud)
事实上,这回答了我的问题,但......这是非常缓慢的.我应该怎么做1920x1080图像?等我死?
所以我要求的东西与上面的代码相同,但速度更快
我找到了一种方法来改进jsbueno建议的方法,它在页面链接中解释:
我有一个程序,我希望像python shell一样,并在键入任何帮助时更改某些单词的颜色?
我有一个主框架(称之为a),还有一个弹出式Toplevel(称之为b).如何确保用户在"活着" a时无法点击任何内容b?
如何将JPEG图像插入Python 2.7 Tkinter窗口?以下代码有什么问题?该图像称为Aaron.jpg.
#!/usr/bin/python
import Image
import Tkinter
window = Tkinter.Tk()
window.title("Join")
window.geometry("300x300")
window.configure(background='grey')
imageFile = "Aaron.jpg"
window.im1 = Image.open(imageFile)
raw_input()
window.mainloop()
Run Code Online (Sandbox Code Playgroud) n可以给出一个参数来tkinter.mainloop起作用,
help(tkinter.Tk.mainloop)
>>>> mainloop(self, n=0) # What is n here ?
Call the mainloop of Tk.
Run Code Online (Sandbox Code Playgroud)
我无法找到任何有关它的文档
这个n参数的目的是什么?
我使用的是Python 2.7和Tkinter.我几乎是面向对象程序的新手.我有一个很长的程序,有许多Tkinter窗口,在某些时候我要求用户加载我用Pandas读取的Excel文件,并希望永久使用和更新该值(数据变量).我现在这样做的方式是使用全局变量,但我知道它是危险的,效率低下而且根本不优雅.
尽管我可以根据构建我的gui类的方式执行controller.show_frame(framename),但我最终自己构建了一些框架,因此数据变量会自行更新.
我在Stack Overflow中阅读并尝试了一些答案但可能已经错误地实现了它们:
self.app_data = {data=[],filename=""}从其他窗口更新它,这里的事情是我认为类gui只实例化了一次,它创建了所有其他窗口类,所以这不起作用.也许我在那里做错了什么.(未在代码上显示).主框架是我需要用于其他目的的某种中间步骤; 以下代码是我的程序的简化.
我知道这是一个糟糕的噩梦代码!谢谢 :)
import Tkinter as tk
import pandas as pd
import tkFileDialog
import tkMessageBox
global data, strat_columns, filename
data = pd.DataFrame([])
strat_columns = []
filename = ""
class gui(tk.Tk):
data = pd.DataFrame([])
filename = ""
def __init__(self):
tk.Tk.__init__(self)
container = tk.Frame(self)
container.pack(side="top",fill="both",expand=True)
self.frames = {}
for F in (main_frame, first_frame):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(main_frame)
def show_frame(self,sel_frame): …Run Code Online (Sandbox Code Playgroud) 这是一个非常简单的程序.
import tkinter
tkinter.Button(None, text='button').pack()
tkinter.mainloop()
Run Code Online (Sandbox Code Playgroud)
我希望这个节目能让我看到如下图.

但它实际上显示了下面的图片.

当它在GUI上调整大小时似乎运行良好.
在High Sierra没有出现这个问题.
我的环境如下:
你能告诉我一下吗?
我在这里发现了同样的问题.
tkinter ×10
python ×9
python-3.x ×3
image ×2
class ×1
icons ×1
jpeg ×1
launcher ×1
macos-mojave ×1
oop ×1
pixel ×1
python-2.7 ×1
tabs ×1
window ×1
wxpython ×1