python中关于tkinter的Scrollbar与canvas组合时,只显示滑块,却无法时页面拖动,求教python大神!!??急!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中关于tkinter的Scrollbar与canvas组合时,只显示滑块,却无法时页面拖动,求教python大神!!??急!相关的知识,希望对你有一定的参考价值。

二者的configure都已经设置,但就是不联动!!!求教大神!!!!

参考技术A scrollbar要定义到cus上,改成scrollbar = tk.Scrollbar(cus,orient = 'vertical') 参考技术B

参考技术C python是当下十分火爆的编程语言,尤其在人工智能应用方面。如果有心从事编程方向的工作,最好到专业机构深入学习、多实践,更贴近市场,这样更有利于将来的发展。AAA教育集团从事高端计算机职业教育工作,是国内知名的教育品牌。自07年创建以来,依托先进的办学理念,AAA培养出了数万名专业型、实战型高端技术人才。AAA教育紧密结合软件企业人才需求,自主研发了专业的软件人才培养课程体系。目前已在北京、郑州、沈阳、武汉、上海、深圳等全国主要城市开设直营教学中心和就业基地。学员大多进入阿里巴巴、360、京东、新浪、搜狐、百度、联想、云智慧、神州数码等知名IT企业。

Python中关于日期相等的GQL查询

【中文标题】Python中关于日期相等的GQL查询【英文标题】:GQL Query on date equality in Python 【发布时间】:2009-07-22 01:41:31 【问题描述】:

好的,上次你们很快而且乐于助人,所以我要回井了;)

免责声明:我是 python 新手,对 App Engine 非常陌生。我正在尝试对 AppEngine 教程中的示例进行简单修改。

我的日期值存储在我的 Memory 类中:

class Memory(db.Model):
    author = db.UserProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateProperty(auto_now_add=True)

现在我希望能够查找某个日期的记录。我不确定该怎么做,所以我尝试了一些方法,包括:

memories = db.GqlQuery("SELECT * from Memory where date = '2007-07-20')
and
memories = Memory.all()
memories.filter("date=", datetime.strptime(self.request.get('date'), '%Y-%m-%d').date())
and
memories = Memory.all()
memories.filter("date=", self.request.get('date'))

但是每次我运行它时,我都会收到 ImportError。坦率地说,我什至不确定如何解析应用程序失败时收到的这些错误消息,但我很高兴能够查找某个日期的内存记录。

编辑:下面是完整的源代码

import cgi
import time

from datetime import datetime
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db

class Memory(db.Model):
    author = db.UserProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateProperty()

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write('<html><body>')

        memories = db.GqlQuery('SELECT * from Memory ORDER BY date DESC LIMIT 10')

        for memory in memories:
            self.response.out.write('<b>%s</b> wrote: ' % memory.author.nickname())
            self.response.out.write('<em>%s</em>' % memory.date)
            self.response.out.write('<blockquote>%s</blockquote>' % cgi.escape(memory.content))

        self.response.out.write("""
<div style="float: left;">
<form action="/post" method="post">
    <fieldset>
    <legend>Record</legend>
    <div><label>Memory:</label><input type="text" name="content" /></textarea></div>
    <div><label>Date:</label><input type="text" name="date" /></div>
    <div><input type="submit" value="Record memory" /></div>
    </fieldset>
</form>
</div>
<div style="float: left;">
<form action="/lookup" method="post">
    <fieldset>
    <legend>Lookup</legend>
    <div><label>Date:</label><input type="text" name="date" /></div>
    <div><input type="submit" value="Lookup memory" /></div>
    </fieldset>
</form>
</div>""")

        self.response.out.write('</body></html>')

class PostMemory(webapp.RequestHandler):
    def post(self):
        memory = Memory()

        if users.get_current_user():
            memory.author = users.get_current_user()

        memory.content = self.request.get('content')
        memory.date = datetime.strptime(self.request.get('date'), '%Y-%m-%d').date()

        memory.put()
        self.redirect('/')

class LookupMemory(webapp.RequestHandler):
    def post(self):
        memories = db.GqlQuery("SELECT * FROM Memory WHERE date = '2009-07-21'")

        for memory in memories:
            self.response.out.write('<b>%s</b> wrote: ' % memory.author.nickname())
            self.response.out.write('<em>%s</em>' % memory.date)
            self.response.out.write('<blockquote>%s</blockquote>' % cgi.escape(memory.content))     

application = webapp.WSGIApplication([('/', MainPage), ('/post', PostMemory), ('/lookup', LookupMemory)], debug=True)

def main():
    run_wsgi_app(application)

if __name__ == '__main__':
    main()

【问题讨论】:

【参考方案1】:

您正在尝试对非 GQL 查询对象使用 GQL 语法。您的选择是:

    使用 Query 对象并传入 datetime.date 对象:q = Memory.all().filter("date =", datetime.date.today()) 使用 GqlQuery 并使用 DATE 语法:q = db.GqlQuery("SELECT * FROM Memory WHERE date = DATE(2007, 07, 20)") 使用 GqlQuery 并传入 datetime.date 对象:q = db.GqlQuery("SELECT * FROM Memory WHERE date = :1", datetime.date.today())

【讨论】:

你自己能运行这段代码吗?除了这个电话之外,也许我还有其他问题?这似乎不太可能,但我的想法已经用完了:( 呃,抱歉,我没有看到您收到的错误是 ImportError。这与 GQL 或查询无关 - 如果我们要提供帮助,您需要向我们展示错误的堆栈跟踪。【参考方案2】:
memories.filter("date=DATE(2007, 7, 20)")

请参阅GQL Reference。

【讨论】:

我试过了,但我仍然收到错误。如果我取出日期过滤线,一切正常。 但是感谢 GQL 参考的链接。我正在寻找与如何比较日期类型相关的东西,但没有成功。我想我并没有太努力;)在此期间我会搞砸的。【参考方案3】:
class Memory(db.Model):
    author = db.UserProperty()
    content = db.StringProperty(multiline=True)
    date = db.DateProperty(auto_now_add=True)

我认为您要么遇到内存导入错误,要么遇到日期时间导入错误

如果内存在另一个 .py 文件中,例如 otherpyfile.py,你需要做 from otherpyfile import Memory 然后这样使用它

如果是日期时间问题,则需要import datetime。您的第一个答案的引号不匹配,因此排序如此。我对你中间的进行了排序,这样如果你导入 datetime

memories = db.GqlQuery("SELECT * from Memory where date = '2007-07-20'")

memories = Memory.all().filter("date=", datetime.datetime.strptime(self.request.get('date'), '%Y-%m-%d').date())

memories = Memory.all().filter("date=", self.request.get('date'))

appengine 错误屏幕并不总是有用,因此请查看命令提示符中抛出的日志。如果您看到该错误,可能值得转储它所做的简短堆栈跟踪,以便我可以尝试进一步帮助您。

【讨论】:

谢谢,这让我更接近了一点(我想!)我不确定我之前运行时是否有报价错误,但现在,我没有收到硬编码日期的任何错误 = '2007-07-20',但我没有得到任何结果,即使我知道该日期的条目已发布到数据存储区。我已经用整个源代码修改了这个问题。也许我错过了一些非常简单的东西。 好的,最后,第二个版本终于为我解决了。我以为我已经尝试过,但一定是遗漏了一些东西。谢谢大家的回复。

以上是关于python中关于tkinter的Scrollbar与canvas组合时,只显示滑块,却无法时页面拖动,求教python大神!!??急!的主要内容,如果未能解决你的问题,请参考以下文章

Python:Tkinter iconbitmap赋值仅适用于模块级别

python中关于本地文件的API

python中关于文件的操作

如何使用 PYTHON 的“tkinter”模块在画布上显示图像,特别适用于 linux?

python中关于发邮件的示例

有关python2与python3中关于除的不同