Python 按钮、树视图的自定义样式
我正在使用Python tkinter开发一个桌面应用程序。我面临的问题,而造型它。是否有任何方法可以获得所需的输出。它可能不精确,但有些类似的东西是:红色/绿色/黄色背景的Python 按钮、树视图的自定义样式,python,tkinter,ttk,Python,Tkinter,Ttk,我正在使用Python tkinter开发一个桌面应用程序。我面临的问题,而造型它。是否有任何方法可以获得所需的输出。它可能不精确,但有些类似的东西是:红色/绿色/黄色背景的按钮,treeview网格线。我试过了 customed_style.configure('Custom.TButton', font=('Helvetica', 11), background="red", foreground='white') customed_style.configure("Custom.Tree
按钮,treeview
网格线。我试过了
customed_style.configure('Custom.TButton', font=('Helvetica', 11), background="red", foreground='white')
customed_style.configure("Custom.Treeview.Heading", background="blue", foreground="white", relief="flat", font=('Helvetica', 10, 'bold'))
但是这些不会产生所需的输出,它们只会将文本颜色更改为白色,而不会更改背景
我正在使用Windows 10操作系统
所需样式:
当前代码:
import tkinter as tk
from tkinter import ttk
class MainWindow:
def __init__(self, master):
self.master = master
self.master.title("Python tkinter ttk Style")
self.master.wm_iconbitmap('icon.ico')
self.frame_buttons = ttk.Frame(self.master)
self.frame_buttons.grid(row=0, column=0, padx=4, pady=4, sticky='nesw')
self.frame_treeview = ttk.Frame(self.master)
self.frame_treeview.grid(row=1, column=0, padx=4, pady=4, sticky='nesw')
self.create_buttons()
self.create_treeview()
def create_buttons(self):
self.details_button_image = tk.PhotoImage(file='details_button.png').subsample(3, 3)
self.edit_button_image = tk.PhotoImage(file='edit_button.png').subsample(3, 3)
self.delete_button_image = tk.PhotoImage(file='delete_button.png').subsample(3, 3)
self.button_details = ttk.Button(self.frame_buttons, text="Details", image=self.details_button_image, compound="left", style='Custom.TButton')
self.button_details.grid(row=0, column=0, padx=4, pady=4)
self.button_edit = ttk.Button(self.frame_buttons, text="Edit", image=self.edit_button_image, compound="left", style='Custom.TButton')
self.button_edit.grid(row=0, column=1, padx=4, pady=4)
self.button_delete = ttk.Button(self.frame_buttons, text="Delete", image=self.delete_button_image, compound="left", style='Custom.TButton')
self.button_delete.grid(row=0, column=2, padx=4, pady=4)
def create_treeview(self):
self.treeview_person_list = ttk.Treeview(self.frame_treeview, columns=('name', 'email', 'contact', 'address'), height=6)
self.treeview_person_list.grid(row=0, column=0, padx=4, pady=4)
self.treeview_person_list.heading('#0', text="ID")
self.treeview_person_list.column("#0", minwidth=50, width=50, anchor='center')
self.treeview_person_list.heading('#1', text="Full Name")
self.treeview_person_list.column("#1", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#2', text="Email")
self.treeview_person_list.column("#2", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#3', text="Phone")
self.treeview_person_list.column("#3", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#4', text="Street Address")
self.treeview_person_list.column("#4", minwidth=150, width=150, anchor='w')
self.treeview_person_list.insert('', 'end', text='01', values=('Annabel Geffen', 'ageffen0@hc360.com', '+55 138 953 4728', '34346 6th Pass'))
self.treeview_person_list.insert('', 'end', text='02', values=('Ailey Myring', 'amyring1@lulu.com', '+234 874 785 2200', '72 Cody Street'))
self.treeview_person_list.insert('', 'end', text='03', values=('Sherie Meeron', 'smeeron2@xing.com', '+86 348 534 4411', '0896 Express Park'))
self.treeview_person_list.insert('', 'end', text='04', values=('Alice Grayston', 'agrayston3@phpbb.com', '+51 591 958 5938', '540 Beilfuss Circle'))
self.treeview_person_list.insert('', 'end', text='05', values=('Hasheem Halbard', 'hhalbard4@wikia.com', '+593 493 130 1417', '08291 Shasta Parkway'))
def main():
root = tk.Tk()
customed_style = ttk.Style()
customed_style.configure('Custom.TButton', font=('Helvetica', 11))
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
import tkinter as tk
from tkinter import ttk
class MainWindow:
def __init__(self, master):
self.master = master
self.master.title("Python tkinter ttk Style")
self.master.wm_iconbitmap('icon.ico')
self.frame_buttons = ttk.Frame(self.master)
self.frame_buttons.grid(row=0, column=0, padx=4, pady=4, sticky='nesw')
self.frame_treeview = ttk.Frame(self.master)
self.frame_treeview.grid(row=1, column=0, padx=4, pady=4, sticky='nesw')
self.create_buttons()
self.create_treeview()
def create_buttons(self):
self.details_button_image = tk.PhotoImage(file='details_button.png').subsample(3, 3)
self.edit_button_image = tk.PhotoImage(file='edit_button.png').subsample(3, 3)
self.delete_button_image = tk.PhotoImage(file='delete_button.png').subsample(3, 3)
self.button_details = ttk.Button(self.frame_buttons, text="Details", image=self.details_button_image, compound="left", style='Custom.TButton')
self.button_details.grid(row=0, column=0, padx=4, pady=4)
self.button_edit = ttk.Button(self.frame_buttons, text="Edit", image=self.edit_button_image, compound="left", style='Custom.TButton')
self.button_edit.grid(row=0, column=1, padx=4, pady=4)
self.button_delete = ttk.Button(self.frame_buttons, text="Delete", image=self.delete_button_image, compound="left", style='Custom.TButton')
self.button_delete.grid(row=0, column=2, padx=4, pady=4)
def create_treeview(self):
self.treeview_person_list = ttk.Treeview(self.frame_treeview, columns=('name', 'email', 'contact', 'address'), height=6, style='Custom.Treeview')
self.treeview_person_list.grid(row=0, column=0, padx=4, pady=4)
self.treeview_person_list.heading('#0', text="ID")
self.treeview_person_list.column("#0", minwidth=50, width=50, anchor='center')
self.treeview_person_list.heading('#1', text="Full Name")
self.treeview_person_list.column("#1", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#2', text="Email")
self.treeview_person_list.column("#2", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#3', text="Phone")
self.treeview_person_list.column("#3", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#4', text="Street Address")
self.treeview_person_list.column("#4", minwidth=150, width=150, anchor='w')
self.treeview_person_list.insert('', 'end', text='01', values=('Annabel Geffen', 'ageffen0@hc360.com', '+55 138 953 4728', '34346 6th Pass'), tag='odd')
self.treeview_person_list.insert('', 'end', text='02', values=('Ailey Myring', 'amyring1@lulu.com', '+234 874 785 2200', '72 Cody Street'), tag='even')
self.treeview_person_list.insert('', 'end', text='03', values=('Sherie Meeron', 'smeeron2@xing.com', '+86 348 534 4411', '0896 Express Park'), tag='odd')
self.treeview_person_list.insert('', 'end', text='04', values=('Alice Grayston', 'agrayston3@phpbb.com', '+51 591 958 5938', '540 Beilfuss Circle'), tag='even')
self.treeview_person_list.insert('', 'end', text='05', values=('Hasheem Halbard', 'hhalbard4@wikia.com', '+593 493 130 1417', '08291 Shasta Parkway'), tag='odd')
self.treeview_person_list.tag_configure('odd', background='#F5F5F5')
self.treeview_person_list.tag_configure('even', background='#FFFFFF')
def main():
root = tk.Tk()
customed_style = ttk.Style()
customed_style.configure('Custom.TButton', font=('Helvetica', 11), background="red", foreground='white')
customed_style.configure('Custom.Treeview', highlightthickness=0, bd=0, font=('Helvetica', 10))
customed_style.configure('Custom.Treeview.Heading', font=('Helvetica', 10, 'bold'), background="blue", foreground="red")
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
当前样式:
带有自定义样式代码:
import tkinter as tk
from tkinter import ttk
class MainWindow:
def __init__(self, master):
self.master = master
self.master.title("Python tkinter ttk Style")
self.master.wm_iconbitmap('icon.ico')
self.frame_buttons = ttk.Frame(self.master)
self.frame_buttons.grid(row=0, column=0, padx=4, pady=4, sticky='nesw')
self.frame_treeview = ttk.Frame(self.master)
self.frame_treeview.grid(row=1, column=0, padx=4, pady=4, sticky='nesw')
self.create_buttons()
self.create_treeview()
def create_buttons(self):
self.details_button_image = tk.PhotoImage(file='details_button.png').subsample(3, 3)
self.edit_button_image = tk.PhotoImage(file='edit_button.png').subsample(3, 3)
self.delete_button_image = tk.PhotoImage(file='delete_button.png').subsample(3, 3)
self.button_details = ttk.Button(self.frame_buttons, text="Details", image=self.details_button_image, compound="left", style='Custom.TButton')
self.button_details.grid(row=0, column=0, padx=4, pady=4)
self.button_edit = ttk.Button(self.frame_buttons, text="Edit", image=self.edit_button_image, compound="left", style='Custom.TButton')
self.button_edit.grid(row=0, column=1, padx=4, pady=4)
self.button_delete = ttk.Button(self.frame_buttons, text="Delete", image=self.delete_button_image, compound="left", style='Custom.TButton')
self.button_delete.grid(row=0, column=2, padx=4, pady=4)
def create_treeview(self):
self.treeview_person_list = ttk.Treeview(self.frame_treeview, columns=('name', 'email', 'contact', 'address'), height=6)
self.treeview_person_list.grid(row=0, column=0, padx=4, pady=4)
self.treeview_person_list.heading('#0', text="ID")
self.treeview_person_list.column("#0", minwidth=50, width=50, anchor='center')
self.treeview_person_list.heading('#1', text="Full Name")
self.treeview_person_list.column("#1", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#2', text="Email")
self.treeview_person_list.column("#2", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#3', text="Phone")
self.treeview_person_list.column("#3", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#4', text="Street Address")
self.treeview_person_list.column("#4", minwidth=150, width=150, anchor='w')
self.treeview_person_list.insert('', 'end', text='01', values=('Annabel Geffen', 'ageffen0@hc360.com', '+55 138 953 4728', '34346 6th Pass'))
self.treeview_person_list.insert('', 'end', text='02', values=('Ailey Myring', 'amyring1@lulu.com', '+234 874 785 2200', '72 Cody Street'))
self.treeview_person_list.insert('', 'end', text='03', values=('Sherie Meeron', 'smeeron2@xing.com', '+86 348 534 4411', '0896 Express Park'))
self.treeview_person_list.insert('', 'end', text='04', values=('Alice Grayston', 'agrayston3@phpbb.com', '+51 591 958 5938', '540 Beilfuss Circle'))
self.treeview_person_list.insert('', 'end', text='05', values=('Hasheem Halbard', 'hhalbard4@wikia.com', '+593 493 130 1417', '08291 Shasta Parkway'))
def main():
root = tk.Tk()
customed_style = ttk.Style()
customed_style.configure('Custom.TButton', font=('Helvetica', 11))
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
import tkinter as tk
from tkinter import ttk
class MainWindow:
def __init__(self, master):
self.master = master
self.master.title("Python tkinter ttk Style")
self.master.wm_iconbitmap('icon.ico')
self.frame_buttons = ttk.Frame(self.master)
self.frame_buttons.grid(row=0, column=0, padx=4, pady=4, sticky='nesw')
self.frame_treeview = ttk.Frame(self.master)
self.frame_treeview.grid(row=1, column=0, padx=4, pady=4, sticky='nesw')
self.create_buttons()
self.create_treeview()
def create_buttons(self):
self.details_button_image = tk.PhotoImage(file='details_button.png').subsample(3, 3)
self.edit_button_image = tk.PhotoImage(file='edit_button.png').subsample(3, 3)
self.delete_button_image = tk.PhotoImage(file='delete_button.png').subsample(3, 3)
self.button_details = ttk.Button(self.frame_buttons, text="Details", image=self.details_button_image, compound="left", style='Custom.TButton')
self.button_details.grid(row=0, column=0, padx=4, pady=4)
self.button_edit = ttk.Button(self.frame_buttons, text="Edit", image=self.edit_button_image, compound="left", style='Custom.TButton')
self.button_edit.grid(row=0, column=1, padx=4, pady=4)
self.button_delete = ttk.Button(self.frame_buttons, text="Delete", image=self.delete_button_image, compound="left", style='Custom.TButton')
self.button_delete.grid(row=0, column=2, padx=4, pady=4)
def create_treeview(self):
self.treeview_person_list = ttk.Treeview(self.frame_treeview, columns=('name', 'email', 'contact', 'address'), height=6, style='Custom.Treeview')
self.treeview_person_list.grid(row=0, column=0, padx=4, pady=4)
self.treeview_person_list.heading('#0', text="ID")
self.treeview_person_list.column("#0", minwidth=50, width=50, anchor='center')
self.treeview_person_list.heading('#1', text="Full Name")
self.treeview_person_list.column("#1", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#2', text="Email")
self.treeview_person_list.column("#2", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#3', text="Phone")
self.treeview_person_list.column("#3", minwidth=150, width=150, anchor='w')
self.treeview_person_list.heading('#4', text="Street Address")
self.treeview_person_list.column("#4", minwidth=150, width=150, anchor='w')
self.treeview_person_list.insert('', 'end', text='01', values=('Annabel Geffen', 'ageffen0@hc360.com', '+55 138 953 4728', '34346 6th Pass'), tag='odd')
self.treeview_person_list.insert('', 'end', text='02', values=('Ailey Myring', 'amyring1@lulu.com', '+234 874 785 2200', '72 Cody Street'), tag='even')
self.treeview_person_list.insert('', 'end', text='03', values=('Sherie Meeron', 'smeeron2@xing.com', '+86 348 534 4411', '0896 Express Park'), tag='odd')
self.treeview_person_list.insert('', 'end', text='04', values=('Alice Grayston', 'agrayston3@phpbb.com', '+51 591 958 5938', '540 Beilfuss Circle'), tag='even')
self.treeview_person_list.insert('', 'end', text='05', values=('Hasheem Halbard', 'hhalbard4@wikia.com', '+593 493 130 1417', '08291 Shasta Parkway'), tag='odd')
self.treeview_person_list.tag_configure('odd', background='#F5F5F5')
self.treeview_person_list.tag_configure('even', background='#FFFFFF')
def main():
root = tk.Tk()
customed_style = ttk.Style()
customed_style.configure('Custom.TButton', font=('Helvetica', 11), background="red", foreground='white')
customed_style.configure('Custom.Treeview', highlightthickness=0, bd=0, font=('Helvetica', 10))
customed_style.configure('Custom.Treeview.Heading', font=('Helvetica', 10, 'bold'), background="blue", foreground="red")
app = MainWindow(root)
root.mainloop()
if __name__ == '__main__':
main()
自定义样式:
如果有人想尝试使用这些图像,下面是代码中使用的三个图像:
详细信息按钮:
编辑按钮:
删除按钮:
任何关于Python tkinter ttk的完整自定义样式的好资源都将不胜感激。提前谢谢。Read@stovfl我已经读过了。然后我尝试了问题中给出的按钮的自定义样式。这并不能解决我的问题。你似乎在使用带有透明文本和图标的图像,所以只需根据自己的选择绘制它们(我的意思是图像的背景)。没有这些图像,您的问题就不完整。@stovfl应用自定义样式后,我已使用状态图像更新了我的问题。请检查。@CommonSense是的,我在按钮
中有文本
和图像
,但在树状视图中没有。形象并不重要。只有带彩色背景的白色文本才能解决我的问题。读@stovfl我已经读过了。然后我尝试了问题中给出的按钮的自定义样式。这并不能解决我的问题。你似乎在使用带有透明文本和图标的图像,所以只需根据自己的选择绘制它们(我的意思是图像的背景)。没有这些图像,您的问题就不完整。@stovfl应用自定义样式后,我已使用状态图像更新了我的问题。请检查。@CommonSense是的,我在按钮
中有文本
和图像
,但在树状视图中没有。形象并不重要。只有带彩色背景的白色文本才能解决我的问题。