我遵循的是Sentdex教程,在这里找到的,特别是关于在Python中创建GUI的这一部分。不过,教程在Python3中,我使用的是2.7。

进口Tkinter是可以的,但是当我进口ttk然后把它继承到A级的时候,就出现了问题。在python 2.7中,ttk是一个单独的模块,这意味着它不在Tkinter类中。

import Tkinter as tk

import ttk

LARGE_FONT= ("Verdana", 12)

class SeaOfBTCApp(tk.Tk):

def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)

tk.Tk.wm_title(self,"Seal of BTC")

container = tk.Frame(self)

container.pack(side="top", fill="both", expand = True)

container.grid_rowconfigure(0, weight=1)

container.grid_columnconfigure(0, weight=1)

self.frames = {}

for F in (StartPage, PageOne, PageTwo):

frame = F(container, self)

self.frames[F] = frame

frame.grid(row=0, column=0, sticky="nsew")

self.show_frame(StartPage)

def show_frame(self, cont):

frame = self.frames[cont]

frame.tkraise()

当类继承tk时出现问题,当我这样做时:

button = ttk.Button(self, text="Visit Page 1",

command=lambda: controller.show_frame(PageOne))

它不使用ttk,按钮看起来还是一样的(就像在tk.Button的时候)。如何使按钮看起来像TTK按钮,请帮助。

完整代码:

import Tkinter as tk

from ttk import *

LARGE_FONT= ("Verdana", 12)

class SeaOfBTC(tk.Tk):

def __init__(self, *args, **kwargs):

tk.Tk.__init__(self, *args, **kwargs)

tk.Tk.wm_title(self,"Sea of BTC")

container = tk.Frame(self)

container.pack(side="top", fill="both", expand = True)

container.grid_rowconfigure(0, weight=1)

container.grid_columnconfigure(0, weight=1)

self.frames = {}

for F in (StartPage, PageOne, PageTwo):

frame = F(container, self)

self.frames[F] = frame

frame.grid(row=0, column=0, sticky="nsew")

self.show_frame(StartPage)

def show_frame(self, cont):

frame = self.frames[cont]

frame.tkraise()

class StartPage(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self,parent)

label = tk.Label(self, text="Start Page", font=LARGE_FONT)

label.pack(pady=10,padx=10)

button = ttk.Button(self, text="Visit Page 1",

command=lambda: controller.show_frame(PageOne))

button.pack()

button2 = ttk.Button(self, text="Visit Page 2",

command=lambda: controller.show_frame(PageTwo))

button2.pack()

class PageOne(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

label = tk.Label(self, text="Page One!!!", font=LARGE_FONT)

label.pack(pady=10,padx=10)

button1 = ttk.Button(self, text="Back to Home",

command=lambda: controller.show_frame(StartPage))

button1.pack()

button2 = ttk.Button(self, text="Page Two",

command=lambda: controller.show_frame(PageTwo))

button2.pack()

class PageTwo(tk.Frame):

def __init__(self, parent, controller):

tk.Frame.__init__(self, parent)

label = tk.Label(self, text="Page Two!!!", font=LARGE_FONT)

label.pack(pady=10,padx=10)

button1 = ttk.Button(self, text="Back to Home",

command=lambda: controller.show_frame(StartPage))

button1.pack()

button2 = ttk.Button(self, text="Page One",

command=lambda: controller.show_frame(PageOne))

button2.pack()

app = SeaOfBTC()

app.mainloop()

如果使用ttk.Button,它绝对会使用ttk按钮。它不可能做任何其他事情,因为您明确地说要使用来自ttk模块的Button类。

注意:根据您所在的平台,tk和ttk按钮看起来可能相同。

除了导入的方式,python 2.x和3.x中的tkinter几乎没有区别。

我在Ubuntu 12.04

在python2里怎么使用ttk_关于用户界面:python 2.7中的Tkinter和ttk相关推荐

  1. python里load什么意思_【python】json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...

  2. xml python2.6_如何使用前缀选项解析python 2.6中的参数为-f file.xml

    我想解析从命令行传递的参数和prefix选项,如下所示: python myApp.y -f file.xml 我使用python 2.6.6所以我不能使用argparse. 而且我想让它更具通用性和 ...

  3. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

  4. python里unexpected eof while parsing_使用Python编程时的10个注意事项

    01初始变化量 在Python里,一个表达式中的名字在它被赋值之前是没法使用的.这是有意而为的:这样能避免一些输入失误,同时也能避免默认究竟应该是什么类型的问题(0,None,"" ...

  5. 安装Python-2.5.2,并修改默认python版本

    由于要在linux中使用python 2.5版本,结果ubuntu 10.04默认版本为2.6,因此要安装2.5版本,并将其默认编译器改为2.5版本的. 下面是主要步骤: 1. 下载源代码: wget ...

  6. python2 openssl安装_CentOS下openssl和python编译安装

    一.前言 本文主要纪录CentOS等类型系统下openssl和python软件编译安装的操作过程和一些注意事项,以供后续回顾使用. 二.操作指导 2.1 环境说明 软件 版本 CentOS 6.9 x ...

  7. Python将PPT中所有文本框里的文字提取出来

    Python将PPT中所有文本框里的文字提取出来 我用了正则表达式,理论上用用可以解析xml格式的都可以,如Beautiful,pandas等. 直接上代码 import os import re s ...

  8. python2 输出不换行_怎样使 Python 输出时不换行

    怎样使 Python 输出时不换行 关注:109  答案:4  mip版 解决时间 2021-01-16 23:39 提问者雨份凉伴 2021-01-16 01:49 怎样使 Python 输出时不换 ...

  9. python2.7装饰器使用_在python里如何使用装饰器

    1 通常可以理解它是一个hook 的回调函数. 或者是理解成python 留给二次开发的一个内置API. 一般是用回调和hook 方式实现的. 2 简单来讲,可以不严谨地把Python的装饰器看做一个 ...

  10. python里row是什么意思_row python

    1.python脚本中经常第一句出现#!/usr/bin/env python或#!/usr/bin/python.这句话的意义下面解释: 脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用 ...

最新文章

  1. Flask-RESTful的简单使用
  2. flask与简单的form表单
  3. python入门须知:包、模块、库的含义以及导入以及包下__init__.py的作用
  4. python爬虫技术可以干什么-Python除了爬虫,还能干啥?
  5. DDD中的聚合和UML中的聚合以及组合的关系
  6. html:(39):块级元素和内联块级元素
  7. 不要低估AI面临的困境
  8. 布谷直播:仿富聊V聊、一对一社交APP、抖音短视频、社交APP源码
  9. 用yacc编写的算术运算计算器_10天学会四则运算小计算器设计之第5天
  10. 几个jquery分发库速度测评
  11. 安卓虚拟键盘_微软双屏Surface Duo上的安卓应用体验:可瞬间变身笔记本电脑
  12. 回顾 | Apache Flink x TiDB Meetup · 北京站(附 PPT 下载)
  13. 分享几篇有关DO-178和GJB5000对比的论文
  14. 小丁带你走进git的世界二-工作区暂存区分支
  15. [n年以前的诗] 回想那一次
  16. 英特尔核显驱动hd630_AMD与英特尔彻底失去合作关系?中止Kaby Lake-G更新支持
  17. python读取与保存图片的exif信息
  18. 六、软件用户操作手册-模板
  19. 互动媒体技术作业——十二个“一”扩展版
  20. CSP202112-3登机牌条码

热门文章

  1. 中央电视台最常用的 100 首经典背景乐曲(视频制作音乐推荐) 2009-05-12 17:31:47
  2. mysql 子链接_MySQL多表查询实例详解【链接查询、子查询等】
  3. 使用Ryu实现交换式集线器(Switching hub)
  4. 计算机网络技术线路连接,计算机网络基础知识之电路交换(CircuitSwitching)
  5. mysql加载audit失败_MySQL5.5 安装mcafee mysql-audit插件 不成功
  6. Adobe Camera Raw使用方法
  7. 五个真实的数据挖掘故事
  8. 私有云搭建使用docker搭建
  9. SEO站内优化教程-SEO站内优化方法教程
  10. 交换芯片CPSS-MARVELL 98DXX交换处理流程